JOINs - Datensätze werden verschluckt

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • JOINs - Datensätze werden verschluckt

    Hallo,

    kann mir jemand erklären, warum beim ersten Query Datensätze "verschluckt" werden??

    PHP-Code:
    $sql "SELECT inserate.id, inserate.titel, 
                    kats.name as kat_name,
                    users.vorname as user_vorname
                FROM "
    .$settings['mysql']['praefix']."inserate inserate,
                    "
    .$settings['mysql']['praefix']."kats kats,
                    "
    .$settings['mysql']['praefix']."users users
                WHERE inserate.kat = kats.id AND inserate.user = users.id"
    ;

    $sql "SELECT inserate.id, inserate.titel,
                    kats.name as kat_name,
                    users.vorname as user_vorname
                FROM "
    .$settings['mysql']['praefix']."inserate inserate
                LEFT JOIN "
    .$settings['mysql']['praefix']."kats kats ON inserate.kat = kats.id
                LEFT JOIN "
    .$settings['mysql']['praefix']."users users ON inserate.user = users.id"
    [COLOR=darkblue].: 1+1=23 :.[/COLOR]

  • #2
    bei left joins treten auch DS auf bei denen der "rechte Teil" nicht vorhanden ist
    der obere (natural join) greift sich diese nicht


    siehe: http://dev.mysql.com/doc/refman/5.0/en/join.html

    If there is no matching record for the right table in the ON or USING part in a LEFT JOIN, a row with all columns set to NULL is used for the right table.
    The NATURAL [LEFT] JOIN of two tables is defined to be semantically equivalent to an INNER JOIN or a LEFT JOIN with a USING clause that names all columns that exist in both tables.
    Zuletzt geändert von Meillo; 05.11.2005, 08:19.
    [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

    [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

    [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
    (from here)

    Kommentar


    • #3
      stimmt, war wieder mal die einfachste Lösung. Ich hatte übersehen, dass in der Test-DB ein paar User gefehlt hatten.
      [COLOR=darkblue].: 1+1=23 :.[/COLOR]

      Kommentar

      Lädt...
      X