Warning: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php on line 58
MySQL für Anfänger einfach erklärt PHP Tutorials nicht nur für Anfänger php-resource.de

php-resource.de

MySQL Tutorial: MySQL für Anfänger einfach erklärt

Dieses Tutorial richtet sich an Anfänger, die noch nie mit SQL gearbeitet haben. Vielleicht ist aber auch für Fortgeschrittene das Eine oder Andere dabei.

|30.09.2008 | Berni | 71259 | KAT : MySQL | | Kommentare 2


11

18

JOIN und NULL

Bei unserem Beispiel gab es für jeden Datensatz in der Tabelle umsatz einen passenden in der Tabelle artikel und umgekehrt. Jetzt wollen wir untersuchen, was passiert, wenn die Relation stellenweise nicht zutrifft. Der Einfachheit halber erstellen wir uns zwei neue sehr einfache Tabellen:

CREATE TABLE t1 (
id integer not null default 0,
zahl integer not null default 0
)

INSERT INTO t1 (id,zahl) VALUES (1,1),(2,1),(3,1)

CREATE TABLE t2 (
id integer not null default 0,
zahl integer not null default 0
)

INSERT INTO t2 (id,zahl) VALUES (1,2),(2,2),(4,2)

In t1 ist die id 4 nicht vorhanden, in t2 fehlt die id 3. Schauen wir mal was passiert:

SQL:
SELECT
    t1.id as t1_id,
    t1.zahl as t1_zahl,
    t2.id as t2_id,
    t2.zahl as t2_zahl
FROM t1
LEFT JOIN t2 on t1.id=t2.id

Mit diesem SQL werden alle Datensätze von t1 angezeigt, von t2 nur solche, die dazu passen. Wenn ein Wert nicht in der JOIN-Tabelle existiert, werden NULL-Werte zurückgegeben. Wenn ein Wert in der JOIN tabelle existiert, in der FROM jedoch nicht, wird kein Datensatz ausgegeben. Anders gesagt: Von t1 werden alle Datensätze angezeigt, von t2 nur solche die dazu passen.

Wer in der Grundschule Mengenlehre hatte, kann sich jetzt freuen: Es ist tatsächlich noch zu etwas zu gebrauchen:

Wir haben die Tabelle t1 udn t2. Es gibt Datensätze, die nur in t1 vorkommen (rot, id=3), nur in t2 vorkommen (gelb, id=4) und die Schnittmenge (grün, id=1 & id=2). Der SQL SELECT [...] FROM t1 LEFT JOIN t2 gibt Daten von t1 und die Schnittmenge t1&t2  zurück.

Schauen wir uns den umgekehrten Fall an, hier ist t2 in FROM und t1 in JOIN:

SQL:
SELECT
    t2.id as t2_id,
    t2.zahl as t2_zahl,
    t1.id as t1_id,
    t1.zahl as t1_zahl
FROM t2
LEFT JOIN t1 on t1.id=t2.id

Auch hier sehen wir wieder die NULL Werte für Datensätze von t2 ohne passenden Datensatz in t1.

NULL - Werte ausschliessen
Bedingungen im WHERE wirken sich auf beide Tabellen aus. Wenn im WHERE die Relation angegeben wird, erscheint der Datensatz mit NULL - Werten nicht mehr:

SQL:
SELECT
    t1.id as t1_id,
    t1.zahl as t1_zahl,
    t2.id as t2_id,
    t2.zahl as t2_zahl
FROM t1
LEFT JOIN t2 on t1.id=t2.id
WHERE t1.id=t2.id

Warnung: Vorsicht bei Gruppierung
Wenn ein GROUP BY verwendet wird, muss man bedenken, dass sich die Summe nur auf die Daten bezieht, die nach dem JOIN verfügbar sind.

SQL:
SELECT
    SUM(t1.zahl) as t1_zahl,
    SUM(t2.zahl) as t2_zahl
FROM t1
LEFT JOIN t2 on t1.id=t2.id

Das Ergebnis der Spalte zahl in der Tabelle t2 ist nicht das Gesamtergebnis 6 sondern lediglich 4, da nur 2 Datensätze zur Tabelle t1 passen.

Navigation -> Seitenanzahl : (18)

 « Anfang ...  «  2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18  » 
Kommentare zum Tutorial
Tutorial kommentieren
 
24.06.2012 10:50:44 Hi, als Anfänger in mysql hat mich dieses Tutorial begeistert und stellenweise schon überf ...
21.01.2010 20:47:24 Ein echt sehr schönes MySQL Tutorials, nur leider fehlen da tiefes eingehen über die Unter ...

Alle Kommentare anzeigen ...
 
Über den Autor
Berni

Berni

Status
Premium Mitglied

Beruf
Selbstständig

Mitglied seit:
22.01.2001

letzte Aktivität
15.07.2018

 

Tutorial bewerten

Hat Ihnen dieses Tutorial gefallen? Dann bewerten Sie es jetzt! Fünf Sterne bedeutet "Sehr gut", ein Stern "Unzureichend".



 

aktuelle Artikel

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Neu | Berni

Wissensbestand in Unternehmen

Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Neu | Berni