Hallo,
was ich nicht verstehe ist, warum bekomme ich unterschiedliche Daten ausgelesen wenn ich folgende beide Abfragen starte?
SELECT * FROM `artikel_ausgeliehen` WHERE `aa_artikelID` LIKE '3ba00ce0c368a8537534fb3aab9af3d1' AND `aa_projektID` LIKE '9e0376a5983764433a9662e917741cdd' AND `aa_datum` = '2019-01-31'
Im oben genannten Code erhalte ich genau einen Datensatz, wie es auch sein soll.
Aber was soll das (teure) LIKE? Warum nicht einfach "="?
In meiner zweiten Abfrage, die ich eigentlich benötige bekomme ich allerdings 50 Einträge, warum?
SELECT aa_id, aa_artikelID, aa_projektID, aa_menge, aa_datum, aa_status, aa_grund, aa_code, p_code, p_titel FROM artikel_ausgeliehen LEFT JOIN projekte ON projekte.p_code = artikel_ausgeliehen.aa_projektID LEFT JOIN artikel_verlust_defekt ON artikel_verlust_defekt.avd_code = artikel_ausgeliehen.aa_code WHERE aa_datum = '2019-01-31' AND aa_artikelID = '3ba00ce0c368a8537534fb3aab9af3d1'
Für den 31.01.2019 und dem ausgewählten Artikel ist nur ein Datensatz vorhanden. Was mache ich im oben genannten Code falsch?
1.)
"LEFT JOIN funktioniert ähnlich wie INNER JOIN mit dem Unterschied, dass Einträge der linken Tabelle keine Verbindung zu den Daten der rechten Tabelle haben müssen, um selektiert zu werden."
Bist Du Dir sicher, dass Du einen LEFT JOIN
willst?
2.)
Wenn Du hier Quelltext markierst, der SQL ist, dann kannst Du hier im Forum ~~~SQL
angeben, statt ~~~PHP
oder ~~~HTML
.
Im Fall von SQL statt HTML sparst Du sogar einen Tastendruck.