Zum Inhalt springen

Frage zu einem Join


michael.schmuck

Empfohlene Beiträge

Hallo,

ich hab da ein kleines Problem mit einem Join.

Und zwar will ich mit einem SELECT gewisse Spalten einer Tabelle Abfragen.

Diese Tabelle ist mit einer 1 zu X Verknüfung mit einer andren Tabelle verbunden.

Wie bekomme ich nun mittels einem SQL String die Informationen aus der "Haupttabelle" und als Wert noch dabei die Anzahl der Datensätze in der Verknüpften Tabelle?

Bisher hatte ich es mit einem Subselect auf der InterBase gemacht, aber da ich das Programm auf MySQL Portieren will, muss ich das abändern. Während des Durchlaufen des Recordsets einen neuen SQL Abzuschießen um die Datensätze zu Zählen würde ich gerne Vermeiden.

Danke schonmal im Vorraus!

Gruß,

Michael Schmuck

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du musst die zwei Tabellen mit einem Join verknüpfen und in der untergeordneten tabelle mit count(*) die Tupel zählen. Damit Du pro Datensatz der Vatertabelle eine Anzahl bekommst, musst Du die Vatertabelle nach dem Primärschlüssel gruppieren.

Hier ein Beispiel, angenommen Bestellung sei die Vatertabelle (mit Primärschlüssel Bestellnummer) und BPosition die abhängige Tabelle (mit Fremdschlüssel Bestellnummer). Dann bekommst Du mit

select b.bestellnummer, count(*) as Anzahl

from Bestellung b join BPosition p on p.bestellnummer=b.bestellnummer

group by b.bestellnummer

zu jedem Datensatz in der Vatertabelle "Bestellung" die Anzahl der in der abhängigen Tabelle "BPosition" enthaltenen Datensätze.

Gruß

Alex

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

hört sich gut an bis jetzt, leider klappts noch nicht 100%ig

ich habe nun folgendes:

 

select

  p.id,

  p.name,

  count(*) as anz

from

  todo_projekte p join todo_aufgaben a on p.id = a.projekt

group by

  p.id

Jedoch bringt mit meine InterBase folgende Meldung:

Dynamic SQL Error.

SQL error code = -104.

invalid column reference.

Ich habe jeweils auf der Projekt und Aufgabentabelle einen Uniqe Key auf dem ID Feld.

Gruß,

Michael Schmuck

Link zu diesem Kommentar
Auf anderen Seiten teilen

Achtung, Du darfst bei einer Gruppierung nur Gruppierungsspalten und Aggregatfunktionen in der SELECT-Liste haben! Wenn Du also außer der ID unbedingt den Namen noch brauchst, muss die Abfrage so aussehen:


select

  p.id,

  p.name,

  count(*) as anz

from

  todo_projekte p join todo_aufgaben a on p.id = a.projekt

group by

  p.id, p.name

Gruß

Alexander

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...