kostenloser Webspace werbefrei: lima-city


JOIN

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    seth93

    seth93 hat kostenlosen Webspace.

    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|....
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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 ;-)
  4. Autor dieses Themas

    seth93

    seth93 hat kostenlosen Webspace.

    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?

  5. 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
  6. 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
  7. Autor dieses Themas

    seth93

    seth93 hat kostenlosen Webspace.

    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
  8. Dafür gibts IS NULL
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!