![]() |
[MySQL]Count über andere Tabelle als Feld in ein Select einbinden
Hi,
ich brauche mal Gedankenanstöße zur Lösung einer SQL-Abfrage. Ich habe 2 Tabelle. Tabelle 1 enthält einen Artikelstamm. Tabelle 2 enthält Artikel, welche über ID aus Artikelstamm identifiziert werden. Jetzt brauche ich ein Select welches alle Datensätze und alle Felder aus Tabelle 1 selektiert plus ein Feld, welches die Anzahl der Datensätze mit der ID aus Tabelle 1 enthält. Beispiel: Tabelle 1:
Code:
Tabelle 2:
ID | Name
---+----- 1 | abc 2 | def
Code:
Das Ergebnis soll so aussehen:
ID | RefID | Verwendungsort
---+-------+--------------- 1 | 1 | Ort1 2 | 2 | Ort2 3 | 1 | Ort3 4 | 1 | Ort4 5 | 2 | Ort5 6 | 1 | Ort6 7 | 1 | Ort7
Code:
Quasi:
ID | Name | Menge
---+------+------ 1 | abc | 5 2 | def | 2
Code:
Nur wie schreibt man eine solche Abfrage in MySQL?
Select *, (Select Count(RefID) from tabelle2 group by RefID) from tabelle1
|
AW: [MySQL]Count über andere Tabelle als Feld in ein Select einbinden
Ich denke so sollte es gehen (ungetestet)
Code:
select tabelle1.*, Count(*) from tabelle2
left join tabelle1 on tabelle1.id=tabelle2.RefId group by tabelle2.RefID |
AW: [MySQL]Count über andere Tabelle als Feld in ein Select einbinden
Im Prinzip schon, aber dann bekomme ich nur die, die in Tabelle 2 midestens einmal vorhanden sind. Ich müsste aber auch aus Tabelle 1 alle Datensätze bekommen, welche in Tabelle 2 nicht vorkommen (dann halt mit dem Count=0).
|
AW: [MySQL]Count über andere Tabelle als Feld in ein Select einbinden
z.B So.
Code:
oder so?
SELECT
tabelle1.ID, tabelle1.Name, (SELECT count(ID) FROM tabelle2 WHERE tabelle2.RefID = tabelle1.ID) as Menge FROM tabelle1
Code:
SELECT
tabelle1.ID, tabelle1.Name, COUNT( tabelle2.ID ) as Menge FROM tabelle1 LEFT JOIN tabelle2 ON tabelle1.ID = tabelle2.RefId GROUP BY tabelle1.ID |
AW: [MySQL]Count über andere Tabelle als Feld in ein Select einbinden
Zitat:
Sicherheitshalber noch ein vollständiges Group by angeben:
Code:
SELECT
tabelle1.ID, tabelle1.Name, COUNT( tabelle2.ID ) as Menge FROM tabelle1 LEFT JOIN tabelle2 ON tabelle1.ID = tabelle2.RefId GROUP BY tabelle1.ID, tabelle1.Name |
AW: [MySQL]Count über andere Tabelle als Feld in ein Select einbinden
Code:
select a.*, (select Count(*) from tabelle2 as b where a.id=b.id) as anzahlb
from Tabelle1 as a |
AW: [MySQL]Count über andere Tabelle als Feld in ein Select einbinden
Zitat:
|
AW: [MySQL]Count über andere Tabelle als Feld in ein Select einbinden
Ja, da hast du recht - sorry, da hab ich nicht genau genug gelesen. #4 war schenller. :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:28 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 by Thomas Breitkreuz