SQL Abfrage - nur Gruppen mit "Inhalt" anzeigen

Julian-w

Mitglied
Hallo,
ich habe momentan ein kleines Problem bei erstellen einer MySQL-Query's, evtl. könntet ihr mir da etwas helfen:

Ich habe zwei Tabellen: Eine Tabelle enthält alle Gruppen und sieht wie folgt aus:

id ; name ; ....
1 ; Gruppe 1; ....
2 ; Gruppe 2; ....
2 ; Gruppe 3; ....

Eine zweite Tabelle enthält nun die "Inhalte" unter den Gruppen und sieht wie folgt aus:

id ; name ; group ; ...
1 ; Inhalt 1; 1 ; ...
2 ; Inhalt 2; 3 ; ...

Nun würde ich gerne alle Gruppen Abfragen, denen ein Inhalt zugeordnet ist. Im oberen Fall wäre dies nur Gruppe 1 und 3. Gruppe 2 dürfte nicht angezeigt werden.

Meine aktuelle Anfrage sieht wie folgt aus:
Code:
SELECT * FROM `categories`
Und danach prüfe ich, ob in den Kategorien schon "Inhalt" vorhanden ist. Dies ist natürlich nicht sehr effizient und erzeugt recht viele SQL-Anfragen.

Von daher wollte ich mal Fragen, wie ich dies besser lösen kann?
Ich freu mich schon auf eure Vorschläge und bedanke mich schonmal :)

Viele Grüße
Julian
 
Mittesl INNER JOIN oder WHERE kannst du das lösen.

INNER JOIN:
SQL:
SELECT
    cat.*
FROM 
    categories AS cat
    INNER JOIN content AS con
        ON cat.id = con.group

WHERE:
SQL:
SELECT
    cat.*
FROM
    categories AS cat,
    content AS con
WHERE
    cat.id = con.group
 
Zuletzt bearbeitet von einem Moderator:
Danke für die schnelle Antwort :)
Ich habe mal die zweite Methode umgesetzt (das mit INNER JOIN hab ich noch nicht so ganz verstanden, werde ich mal bei Gelegenheit mir näher anschauen), vor allem sieht sie auch recht "logisch und einfach" aus.
Das dumme ist nur, dass mir die Abfrage für jeden Eintrag in "Inhalt" die Gruppe zurück gibt, es also unter der Gruppe 1 drei "Inhalte" gibt, erhalte ich 3x die Gruppe 1 zurück.
Gut, das lässt sich recht einfach mit php beheben, aber evtl. kann man ja auch etwas die Abfrage umformen, nur wüsste ich nicht wie ;)

Aber auf jeden Fall schon mal Danke für die rasante Hilfe! :)
 
Zurück