![]() |
Datenbank: MySQL • Version: 5.0 • Zugriff über: PHPs MySQL Extension
[SQL] Von mehreren Tabellen selektieren: Reihen fehlen!
Hi DPler,
ich bin erst seit kurzer Zeit dabei, mir etwas mehr Erfahrung von SQL anzuarbeiten und etwas mehr als nur einfache SELECTs und UPDATEs zu benutzen. Ich bin nun leider auf ein Problemchen gestoßen, bei dem es mir schwer fällt danach zu Google'n oder die Manuals zu durchforsten. Ich habe momentan folgenden Query, der auch weitgehend funktioniert. (Das ist nicht der original-Query, sondern nur das gleiche Prinzip)
SQL-Code:
Das Problem ist nun, dass es seit kurzem keinen Eintrag mehr in table_three gibt, der auf table_one.example passt. Das ist auch richtig so, der Eintrag soll gelöscht sein. Allerdings werden Zeilen aus table_one, bei denen es keinen passenden Eintrag aus table_three gibt nicht mehr zurückgegeben. Das ist nicht so, wie ich es gerne hätte.
SELECT
A.*, B.column AS my_column, C.foo AS bar FROM table_one AS A, table_two AS B table_three AS C WHERE B.column = A.another_column AND C.foobar = A.example Ich hätte gerne auch diese Zeilen. Was jetzt in der per AS als "bar" benannte Spalte steht ist mir eigentlich ziemlich egal. Von mir aus soll ein leerer String drin sein oder NULL. Jedenfalls muss ich die Spalte von anderen unterscheiden können. Normalerweiße müsste ein String, der länger als 1 ist drin stehen. Alles andere kann ich ja dann unterscheiden. Ich hoffe, ich habe das halbwegs gut erklärt und mir kann jemand helfen. Ich würde mich auch freuen, wenn jemand vielleicht dein ein oder anderen Artikel kennt, bei dem man etwas mehr über SQL lernen kann. (Joins usw.) Mit freundlichen Grüßen, Valle |
Re: [SQL] Von mehreren Tabellen selektieren: Reihen fehlen!
Du verwendest einen impliziten Join. Dieser ist immer ein inner join. Du benötigst einen left outer join.
SQL-Code:
SELECT
A.*, B.column AS my_column, C.foo AS bar FROM table_one A join table_two B on B.column = A.another_column left join table_three C on C.foobar = A.example; |
Re: [SQL] Von mehreren Tabellen selektieren: Reihen fehlen!
Zitat:
Aber warum finde ich denn dazu eigentlich auf mysql.com nichts? Ist es irgendwie Allgemeinwissen, was der Unterschied zwischen den vielen verschiedenen Joins ist? Ich finde auch mit Google nichts lesenswertes und die Namen der Funktionen sind ja nun auch nicht gerade selbsterklärend. Mit freundlichen Grüßen, Valle |
Re: [SQL] Von mehreren Tabellen selektieren: Reihen fehlen!
Inner join: nur Datensätze die in beiden Tabellen existieren
left (outer) join: alle Datensätze der linken Tabelle right (outer) join: alle Datensätze der rechten Seite full outer join: alle Datensätze aus beiden Tabellen cross join: jede Kombination der beiden Tabellen |
Re: [SQL] Von mehreren Tabellen selektieren: Reihen fehlen!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:26 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