JOIN
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
art
benutzer
bringen
code
datum
entfernen
ergebnis
jemand
machen
null
ort
paar
person
praxis
spalten
spiel
syntax
tabelle
url
- 
    
    Hey,
 
 kann mir jemand ein bisschen was zu JOIN sagen?
 Ich hatte im Informatikunterricht MS Access und hab mir auch die SQL ab und zu angeguckt.
 Hab daraufhin noch ein paar Tuts zu JOIN in PHP mir angeguckt, aber mir ist nicht ganz klar,
 wann und wie genau man es verwendet.
 
 Ist es sinnvoll hier Join zu verwenden:
 
 while($query = mysql_fetch_object($sql)){ $name = mysql_fetch_object(mysql_query("SELECT * FROM bla WHERE name = '$query->nr'")); }
 Wenn ja, wie mache ich das ?
 Tabellenstruktur ist erstmal nur:
 
 Tabelle Benutzer:
 nr|name|....
 
 Tabelle bla
 nr|....
 
- 
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden! lima-city: Gratis werbefreier Webspace für deine eigene Homepage 
- 
    
    Hallo gurndsätzlich is ein join immer sinnvoll!
 
 SELECT *
 FROM benutzer
 natural join bla
 WHERE name = '$query->nr'
 
 Also in deinem Fall natural join da foreign und primary key die gleiche bezeichnung haben. Sonst:
 
 SELECT *
 FROM benutzer
 join bla on (benutzerNr = blaNr)
 WHERE name = '$query->blaNr'
 
 In der Praxis dann pls den * entfernen, zum testen is es jedoch OK  
- 
    
    Danke, hättest du irgendwo eine Übersicht mit den Join-Befehlen?
 Es gibt ja INNER JOIN, LEFT JOIN usw. und ich weiß gar nicht genau was die bringen.
 Warum sollte ich den * entfernen?
 
 
- 
    
    Hallo,
 
 ich komme aus der Sybase- und seit neuestem aus der Oraclewelt, bin mit der Syntax also nicht so ganz vertraut, aber das Beispiel macht so noch nicht viel Sinn. Um das verständlich zu machen sollte noch eine Spalte in der Tabelle bla:
 
 Tabelle Benutzer:
 nr|name
 1|max
 2|berta
 
 Tabelle bla
 nr|Adresse
 1|irgendwo
 2|sonstwo
 
 select benutzer.name, bla.Adresse
 from benutzer join bla (on benutzer.nr = bla.nr)
 Where benutzer.name = 'max'
 (Sybasesyntax wobei die Syntax erstmal wurst ist, zumindes um das Prinzip zu verstehen)
 
 Ergebnis
 max, irgendwo
 
 Joinen ist grundsätzlich sinnvoll, weil das Ergebnis schneller kommt als wenn man Subqueries verwendet.
 
 Viel Spass beim tüfteln
 Frank
- 
    
    Ein INNER JOIN oder STRAIGHT JOIN oder einfach nur JOIN verknüpft zwei Tabellen in der Art dass in BEIDEN Tabellen Werte gefunden werden müssen:
 
 TABELLE PERSONEN
 ID_P, NAME, ID_GEBURTSORT
 1, Müller, 1
 2, Maier, NULL
 3, Huber, 5
 
 TABELLE ORTE
 ID_O, ORT
 1, Hamburg
 2, München
 5, Augsburg
 
 SELECT * FROM PERSONEN JOIN ORTE ON (PERSONEN.ID_GEBURTSORT = ORTE.ID_O)
 Ergebnis:
 1, Müller, 1, 1, Hamburg
 5, Huber, 5, 5, Augsburg
 
 Ein LEFT JOIN oder LEFT OUTER JOIN erhält IMMER die Spalten der LINKEN Tabelle und füllt ggf. die Spalten der rechten Tabelle mit NULL auf.
 
 SELECT * FROM PERSONEN LEFT JOIN ORTE ON (PERSONEN.ID_GEBURTSORT = ORTE.ID_O)
 Ergebnis:
 1, Müller, 1, 1, Hamburg
 2, Maier, NULL, NULL, NULL
 5, Huber, 5, 5, Augsburg
 
 Ein RIGHT JOIN oder RIGHT OUTER JOIN macht das gleiche nur dass die RECHTE Tabelle IMMER kommt
 
 SELECT * FROM PERSONEN RIGHT JOIN ORTE ON (PERSONEN.ID_GEBURTSORT = ORTE.ID_O)
 Ergebnis:
 1, Müller, 1, 1, Hamburg
 NULL, NULL, NULL, 2, München
 5, Huber, 5, 5, Augsburg
 
- 
    
    JOIN hat mir sehr viel gebracht :)
 Aber nun komm ich wieder zu einem Problem:
 Ich hab eine Tabelle mit folgender Struktur:
 ID|team1|team2|
 
 Ich nenn die Tabelle mal einfach spiele.
 
 Jertzt hab ich eine 2. Tabelle, die die Spieltipps beinhaltet:
 ID|sid|userid|tipp1|tipp2
 
 
 Wie lese ich jetzt alle Daten aus der 1. Tabelle aus ohne die Datensätze auszulesen, wo es schon einen
 Tipp gibt.
 
 sid = spiele.id
 userid = ID des User
 
 
 
 Lg
 
- 
    
    Dafür gibts IS NULL
- 
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden! lima-city: Gratis werbefreier Webspace für deine eigene Homepage 

