MySQL: Count und GROUP BY Problem

Hattrix

Erfahrenes Mitglied
Hallo,

folgender SQL-Befehl:

SELECT count(*),verein FROM vereine INNER JOIN setzen ON vereine.verein=setzen=verein GROUP BY verein

Ergibt:

Alle haben die Zahl 1 bei count(*)!

Warum?

Denn ich will, dass wenn der Verein in beiden Tabellen auftritt, das eine 2 da steht. Tritt der Verein in der setzen-Tabelle nicht auf, soll nur eine 1 dastehen!
 
Hallo Daniel,

ich glaub da herscht ein Gedankliches Problem. Du verknüpfst in deiner Abfrage 2 Tabelle über ein eineindeutiges Feld, du wirst in deiner Abfrage demnach als Ergebnis nur die Vereine erhalten die in beiden Tabellen stehen, demnach ist logischerweise Count auch immer 1.
Das SQL Statement ist also richtig, das geforderte ist so auch nicht umsetzbar. Du kannst entweder nach Vereinen suchen die in beiden Tabellen sind, oder nur in einer. Die Unterscheidung und somit dein Wert 1 oder 2 ist so nicht möglich.
Einzigste Möglichkeit wäre, lesen der Tabelle Vereine und das ergebnis in ner Schleife durchlaufen in der du Prüfst ob der Verein in Tabelle Setzen vorhanden ist, wenn ja dann $zahl = 2, ansonsten $zahl = 1
 
Also eine Möglichkeit steht ja schon in meiner Antwort, dürfte aber nicht praktikabel sein bei vielen Datensätzen, weils einfach länger dauern würde. Das optimalste wäre wenn du der Verein Tabelle ein extra Feld hinzufügst in dem du je nachdem ob in der Tabelle "setzen" vorhanden, eine 0 = nein, oder eine 1 = ja einträgst. Das kannst ja bei der Insert Anweisung für die setzen Tabelle mit einbauen und so brauchst dann auch nur noch eine Tabelle abfragen, was die entgültige Abfrage ohne Inner Join nochmal schneller macht da MySQL die Tabellen nicht HighLive verknüpfen muss.
Gibt sicherlich noch mehr Möglichkeiten, aber das sind so spontan die die mir einfallen.
 
Zurück