AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Count mit Join über mehrere table
Thema durchsuchen
Ansicht
Themen-Optionen

Count mit Join über mehrere table

Ein Thema von monta · begonnen am 7. Mai 2006 · letzter Beitrag vom 7. Mai 2006
Antwort Antwort
monta

Registriert seit: 18. Okt 2004
Ort: Dresden
141 Beiträge
 
#1

Count mit Join über mehrere table

  Alt 7. Mai 2006, 08:04
Datenbank: Firebird embedded • Version: 1.5 • Zugriff über: IbExpert/Zeos
Hallo,
ich hab eine Frage zur anwednung von Counts über mehrere Tabellen. Die Sache liegt wie folgt:

Ich habe 3 Tabellen:
Code:
Tabelle 1
id Daten...
1  zhn
2  sdfvb
3  cfgf
Code:
Tabelle 2
id id_tabelle1 Daten...
1     1        dfgh
2     3        jöpk
3     3        huhui
Code:
Tabelle 2
id id_tabelle1 Daten...
1     2        dfgh
2     3        jöpk
3     3        hjkhj
4     3        gzj
Nun wollte ich mittels eines Selects direkt die Tabelle eins abrufen und dazu jeweils die Anzahl der verbundenen Datensätze aus den anderen beiden Tabellen, welche sich auf tabelle1 beziehen.

versucht hab ich es damit:
SQL-Code:
SELECT DISTINCT (tabelle1.daten),
            COUNT (tabelle2.id) AS tabelle2anzahl,
            COUNT (tabelle3.id) AS tabelle3anzahl
     FROM tabelle1 LEFT JOIN tabelle2 ON tabelle1.id = tabelle2.id_tabelle1
          LEFT JOIN tabelle2 ON tabelle1.id = tabelle2.id_tabelle1 GROUP BY tabelle1.daten
Das liefert allerdings nur die richtigen Werte, wenn eines der beiden Count 0 zurückgibt.

Also für die ersten beiden Datensätze aus tabelle1 wird korrekt wiedergegeben.
Das Problem liegt im dritten, wenn beide Tabellen auf tabelle1 verweisen, werden die beiden Counts scheinbar addiert und zurückgegeben werden :
Code:
zhn 1  0   //stimmt
sdfvb 0  1   //stimmt
cfgf 6  6   //stimmt nicht, da es 2 und 3 heißen müsste.
Wie kann man dieses Problem nun umgehen?, sodass es möglichst noch eine einzelne Abfrage bleibt?
Johannes M.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Count mit Join über mehrere table

  Alt 7. Mai 2006, 08:20
Das mit den Joins funktioniert manchmal nicht so, wie man es erwartet. Bei Deinem Problem würde ich Folgendes versuchen:
SQL-Code:
Select Daten,
  (select count (*) from Tabelle2 where Tabelle2.ID_Tabelle1 = Tabelle1.ID) as Cnt2,
  (select count (*) from Tabelle3 where Tabelle3.ID_Tabelle1 = Tabelle1.ID) as Cnt3
from Tabelle1
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
monta

Registriert seit: 18. Okt 2004
Ort: Dresden
141 Beiträge
 
#3

Re: Count mit Join über mehrere table

  Alt 7. Mai 2006, 08:47
Super, danke.
Jetzt funktioniert es.
Johannes M.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz