AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi [MySQL]Count über andere Tabelle als Feld in ein Select einbinden
Thema durchsuchen
Ansicht
Themen-Optionen

[MySQL]Count über andere Tabelle als Feld in ein Select einbinden

Ein Thema von Hobbycoder · begonnen am 11. Dez 2019 · letzter Beitrag vom 12. Dez 2019
Antwort Antwort
Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#1

[MySQL]Count über andere Tabelle als Feld in ein Select einbinden

  Alt 11. Dez 2019, 16:36
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:
ID | Name
---+-----
1  | abc
2  | def
Tabelle 2:

Code:
ID | RefID | Verwendungsort
---+-------+---------------
1  | 1     | Ort1
2  | 2     | Ort2
3  | 1     | Ort3
4  | 1     | Ort4
5  | 2     | Ort5
6  | 1     | Ort6
7  | 1     | Ort7
Das Ergebnis soll so aussehen:

Code:
ID | Name | Menge
---+------+------
1  | abc | 5
2  | def | 2
Quasi:
Code:
Select *, (Select Count(RefID) from tabelle2 group by RefID) from tabelle1
Nur wie schreibt man eine solche Abfrage in MySQL?
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#2

AW: [MySQL]Count über andere Tabelle als Feld in ein Select einbinden

  Alt 11. Dez 2019, 17:00
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

Geändert von samso (11. Dez 2019 um 17:06 Uhr) Grund: tabelle2.RefId durch tabelle1.* ersetzt
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#3

AW: [MySQL]Count über andere Tabelle als Feld in ein Select einbinden

  Alt 11. Dez 2019, 18:01
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).
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
310 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: [MySQL]Count über andere Tabelle als Feld in ein Select einbinden

  Alt 11. Dez 2019, 18:14
z.B So.

Code:
SELECT
   tabelle1.ID,
   tabelle1.Name,
   (SELECT count(ID) FROM tabelle2 WHERE tabelle2.RefID = tabelle1.ID) as Menge
FROM tabelle1
oder so?

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
Chris

Geändert von hhcm (11. Dez 2019 um 18:28 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: [MySQL]Count über andere Tabelle als Feld in ein Select einbinden

  Alt 11. Dez 2019, 20:28
oder so? ..
2. Vorschlag könnte schneller sein.
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
Gruß, Jo
  Mit Zitat antworten Zitat
TigerLilly
Online

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: [MySQL]Count über andere Tabelle als Feld in ein Select einbinden

  Alt 12. Dez 2019, 08:06
Code:
select a.*, (select Count(*) from tabelle2 as b where a.id=b.id) as anzahlb
from Tabelle1 as a
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: [MySQL]Count über andere Tabelle als Feld in ein Select einbinden

  Alt 12. Dez 2019, 08:22
select a.*, (select Count(*) from tabelle2 as b where a.id=b.id) as anzahlb from Tabelle1 as a
gab's schon in #4.
Gruß, Jo
  Mit Zitat antworten Zitat
TigerLilly
Online

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: [MySQL]Count über andere Tabelle als Feld in ein Select einbinden

  Alt 12. Dez 2019, 08:25
Ja, da hast du recht - sorry, da hab ich nicht genau genug gelesen. #4 war schenller.
  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 10:30 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