weil hier immer so viel fragen zu joins und zu erklärenden beispiel kommen, hab ich mich in meiner grenzenlosen güte mal hingesetzt und was zusammengeflickt
die SELECT-Statements einfach mal ausprobieren und schauen was rauskommt, ich denke, ich hab so ziemlich jeden Fall abgedeckt
tabellen
SELECT-Statements
zahl und quadrat auslesen:
alle zahlen auslesen und das quadrat dazu, sofern vorhanden
alle quadrate auslesen und die wurzel dazu, sofern vorhanden
alle zahlen auslesen, zu denen das quadrat nicht vorhanden ist
alle quadrate auslesen, zu denen die wurzel nicht vorhanden ist
die SELECT-Statements einfach mal ausprobieren und schauen was rauskommt, ich denke, ich hab so ziemlich jeden Fall abgedeckt
tabellen
Code:
CREATE TABLE tabelle1 ( tab1_id int(11) NOT NULL auto_increment, zahl int(11) NOT NULL default '0', PRIMARY KEY (tab1_id) ) TYPE=MyISAM; INSERT INTO tabelle1 VALUES (1, 1), (2, 2), (3, 4), (4, 8); CREATE TABLE tabelle2 ( tab2_id int(11) NOT NULL auto_increment, tab1_id int(11) default '0', quadrat int(11) NOT NULL default '0', PRIMARY KEY (tab2_id) ) TYPE=MyISAM; INSERT INTO tabelle2 VALUES (1, 2, 4), (2, 3, 16), (3, 4, 64), (4, NULL, 256);
zahl und quadrat auslesen:
Code:
SELECT t1.zahl, t2.quadrat FROM tabelle1 t1 INNER JOIN tabelle2 t2 USING(tab1_id) # alternativ # so können auch mehrere bedingungen angegeben werden # syntax is mit der bei WHERE identisch SELECT t1.zahl, t2.quadrat FROM tabelle1 t1 INNER JOIN tabelle2 t2 ON t1.tab1_id = t2.tab1_id # mit ON können auch spalten verglichen werden, deren namen nicht gleich sind # aber schon allein der übersichtlichkeit halber wären identische spaltennamen besser # sinnloses beispiel: SELECT t1.zahl, t2.quadrat FROM tabelle1 t1 INNER JOIN tabelle2 t2 ON t1.tab1_id = t2.tab2_id
Code:
SELECT t1.zahl, t2.quadrat FROM tabelle1 t1 LEFT JOIN tabelle2 t2 USING(tab1_id)
Code:
SELECT t1.zahl, t2.quadrat FROM tabelle1 t1 RIGHT JOIN tabelle2 t2 USING(tab1_id) ##selbstverständlich geht auch das: SELECT t1.zahl, t2.quadrat FROM tabelle2 t2 LEFT JOIN tabelle1 t1 USING(tab1_id)
Code:
SELECT t1.zahl FROM tabelle1 t1 LEFT JOIN tabelle2 t2 USING(tab1_id) WHERE t2.tab1_id IS NULL
Code:
SELECT t2.quadrat FROM tabelle1 t1 RIGHT JOIN tabelle2 t2 USING(tab1_id) WHERE t1.tab1_id IS NULL
Kommentar