![]() |
Datenbank: MS SQL • Zugriff über: ADO
SQL Abfrage, Zählen von n Datensätzen aus 2. Tabelle
Hallo,
ich bräuchte Hilfe bei einer SQL Abfrage. Und zwar habe ich die Tabelle Issues und Attachments. Nun müsste ich in der Ergebnismenge ausgeben ob zu der Issue eine Attachment vorhanden ist. Das folgende SQl funktioniert so leider nicht.
SQL-Code:
Das Ergebnis soll später so aussehen:
select IssueID, i.Name, Attachment = Case When (Select COUNT(*) from TB_IssueAttachetFiles Where a.FK_IssueID = i.IssueID) > 0 then 'Yes'
from tb_issues i; IssueID Attachment 1 Yes 2 3 4 Yes Gruß Marcus |
Re: SQL Abfrage, Zählen von n Datensätzen aus 2. Tabelle
SQL-Code:
select
IssueID, i.Name, Case When (Select COUNT(*) from TB_IssueAttachetFiles Where a.FK_IssueID = i.IssueID) > 0 then 'Yes' else '' end as Attachment from tb_issues i; |
Re: SQL Abfrage, Zählen von n Datensätzen aus 2. Tabelle
Hallo,
ist die Syntax so korrekt? Wie lautet die Fehlermeldung?
SQL-Code:
Hätte eher sowas erwartet:
select IssueID, i.Name, Attachment = Case When (Select COUNT(*) from TB_IssueAttachetFiles Where a.FK_IssueID = i.IssueID) > 0 then 'Yes'
from tb_issues i;
SQL-Code:
Stephan
select i.IssueID,
i.Name, Case When (Select COUNT(*) from TB_IssueAttachetFiles a Where a.FK_IssueID = i.IssueID) > 0 then 'Yes' else 'No' end as Attachment from tb_issues i; PS: und schon wieder ist einer schneller :wink: |
Re: SQL Abfrage, Zählen von n Datensätzen aus 2. Tabelle
SQL-Code:
da du die genaue Anzahl ja nicht benötigst...
SELECT IssueID, Name,
CASE WHEN (SELECT COUNT(*) FROM TB_IssueAttachetFiles WHERE FK_IssueID = i.IssueID) > 0 THEN 'Yes' ELSE NULL END Attachment FROM tb_issues i
SQL-Code:
SELECT IssueID, Name,
CASE WHEN EXISTS (SELECT * FROM TB_IssueAttachetFiles WHERE FK_IssueID = i.IssueID) THEN 'Yes' ELSE NULL END Attachment FROM tb_issues i oder auch...
SQL-Code:
SELECT i.IssueID, i.Name, COALESCE('Yes (' + a.anzahl + ')', '') AS Attachment
FROM tb_issues i LEFT JOIN (SELECT FK_IssueID, COUNT(*) AS anzahl FROM TB_IssueAttachetFiles GROUP BY FK_IssueID) a ON i.IssueID = a.FK_IssueID |
Re: SQL Abfrage, Zählen von n Datensätzen aus 2. Tabelle
...
|
Re: SQL Abfrage, Zählen von n Datensätzen aus 2. Tabelle
Hey Danke für die ganzen Anworten!
Die Syntax meines SQLs ist nicht korrekt. Hatte ich ganz vergessen zu schreiben, sorry. mKinzler nutzt ja quasi mein Query mit der richtigen Syntax :) Dann funktionierts auch. Da ich die Anzahl wirklich nicht brauche müsste omata's Version ohne das Count, schneller sein, oder? |
Re: SQL Abfrage, Zählen von n Datensätzen aus 2. Tabelle
Zitat:
|
Re: SQL Abfrage, Zählen von n Datensätzen aus 2. Tabelle
Ich weiß ;) Da war ich ja nah dran^^
Ich nutze jetzt aber omata Version mit dem EXISTS Statement. Das läuft soweit sehr gut. |
Re: SQL Abfrage, Zählen von n Datensätzen aus 2. Tabelle
Hat zwar nix mit der eigentlichen Frage zu tun, aber ich versuche grundsätzlich SQLs wir select * from customers oder select count(*) from customers zu vermeiden.
Bei grossen Datenbanken könnte die Performance darunter leiden. Bei einem count bietet sich ein select count(1) from customers an. Nur so nebenbei! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz