Innerjoin

sipoh

Erfahrenes Mitglied
Hallo,

ich verstehe nicht so ganz das Prinzip des SQL-Statements (INNER)-JOIN.
Ich habe mir mehere Tutorials durchgelesen, anhand derer ich u. s. Konstrukt "vollbracht" habe.

Zum Verständnis: Ich möchte jeder id(ag) die nicht in agid(sm) vertreten ist ausgeben lassen.
Kann mir jemand helfen?

Schema:

Tabelle: ag
id - aufgabe


Tabelle: sm
id - agid - summe


SELECT id, aufgabe
FROM ag INNER JOIN sm
ON (sm.summe)
WHERE ag.id nicht sm.agid
 
Du brauchst dazu eine Subquery:


SELECT * FROM ag
WHERE id not in (SELECT id FROM sm)

Grüsse
 
Allerdings - Ein Problem tritt noch auf.
(Das ist jetzt etwas anderes, wollte aber keinen neuen Tread öffnen ..)

Zweck: Gegenteil vom vorherigen Problem - Ich möchte jede id(ag) die in agid(sm) vertreten ist ausgeben lassen.


Sind mehrere Einträge in der zweiten Tabelle zur id(ag) vorhanden, werden diese jetzt entsprechend so oft der Anzahl der Einträge ausgegeben.

Ich habe das mit DESTINCT versucht, einzugrenzen, leider ohne Erfolg:

Code:
$sql01 = "SELECT DISTINCT *, u.id, o.agid AS onID FROM ag u LEFT JOIN sm o ON u.id = o.agid WHERE u.id = o.agid ORDER BY RAND()";
 
Auch hier wieder am einfachsten mit der subquery, einfach ohne not

SELECT * FROM ag
WHERE id in (SELECT id FROM sm)

Grüsse
 

Neue Beiträge

Zurück