AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MySQL Probleme mit einem Left Join

MySQL Probleme mit einem Left Join

Ein Thema von Hobbycoder · begonnen am 15. Okt 2018 · letzter Beitrag vom 15. Okt 2018
Antwort Antwort
Hobbycoder

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

MySQL Probleme mit einem Left Join

  Alt 15. Okt 2018, 16:42
Datenbank: MySQL • Version: 5.6 • Zugriff über: UniDAC
Hi,

ich habe ein Problem mit einem SQL-Statement.

Code:
Select e.*, count(b.guid) as bilder from ersatzfzg as e left join bilder as b on e.kennzeichen=b.kennzeichen where e.betriebguid='{D30C179A-E8D8-41B5-937E-82DE8F55072C}' and e.aktiv=1 order by e.ID
Soll alle Felder der Tabelle "ersatzfzg", und zusätzlich ein Feld mit der Anzahl hinterlegter Bilder aus der Tabelle "bilder", liefern.
Die Tabelle "ersatzfzg" umfasst 9 Datensätze (alle im Feld "aktiv" = 1).
In der Tabelle Bilder sind 2 Datensätze.

Wenn nun keines der Kennzeichen in Tabelle "bilder" gefunden wird, wird lediglich der 1. Datensatz zurück geliefert.
Wenn ich einen Datensatz in "erstazfzg" hinzufügen, wo dann das Kennzeichen zu denen in der Tabelle "bilder" passt, wird nur dieser neue Datensatz zurückgeliefert.

Benötigen würde ich jedoch alle Datensätze aus der Tabelle "ersatzfzg" wo aktiv=1 ist und die betriebguid passt, und halt wenn keine Datensätze in der Tabelle "bilder" gefunden werden, dann halt eine 0 geliefert wird.
So wie ich left join verstanden habe, sollte das so eigentlich funktionieren. Oder macht man das anders?
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: MySQL Probleme mit einem Left Join

  Alt 15. Okt 2018, 16:51
SQL-Code:
Select
  e.*, bilder
from
  ersatzfzg as e
    left join ( select e.kennzeichen, count( bguid) as bilder from bilder group by kennzeichen ) b on e.kennzeichen=b.kennzeichen
where
  e.betriebguid='{D30C179A-E8D8-41B5-937E-82DE8F55072C}and
  e.aktiv=1
 order by
   e.ID;
Markus Kinzler
  Mit Zitat antworten Zitat
Hobbycoder

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

AW: MySQL Probleme mit einem Left Join

  Alt 15. Okt 2018, 17:01
Danke.

Kann man sagen, dass deine Lösung mit dieser
SQL-Code:
Select e.*,
  (Select Count(ID) from bilder where kennzeichen=e.kennzeichen) as Count
from ersatzfzg as e
where e.betriebguid='{D30C179A-E8D8-41B5-937E-82DE8F55072C}and e.aktiv=1
order by e.ID
identische Ergebnisse liefert?
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: MySQL Probleme mit einem Left Join

  Alt 15. Okt 2018, 17:04
Sollte ja. Die eine Lösung halt über SubQuery die andere als deferred table.
Markus Kinzler
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
930 Beiträge
 
#5

AW: MySQL Probleme mit einem Left Join

  Alt 15. Okt 2018, 17:33
Danke für die Erleuchtung
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:01 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