AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken [SQL] Von mehreren Tabellen selektieren: Reihen fehlen!
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL] Von mehreren Tabellen selektieren: Reihen fehlen!

Ein Thema von Valle · begonnen am 6. Apr 2008 · letzter Beitrag vom 7. Apr 2008
Antwort Antwort
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#1

[SQL] Von mehreren Tabellen selektieren: Reihen fehlen!

  Alt 6. Apr 2008, 19:09
Datenbank: MySQL • Version: 5.0 • Zugriff über: PHPs MySQL Extension
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:
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
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.

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
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: [SQL] Von mehreren Tabellen selektieren: Reihen fehlen!

  Alt 6. Apr 2008, 19:12
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;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#3

Re: [SQL] Von mehreren Tabellen selektieren: Reihen fehlen!

  Alt 6. Apr 2008, 21:46
Zitat von mkinzler:
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;
Hey danke, so hat es funktioniert!

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
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: [SQL] Von mehreren Tabellen selektieren: Reihen fehlen!

  Alt 6. Apr 2008, 22:00
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
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: [SQL] Von mehreren Tabellen selektieren: Reihen fehlen!

  Alt 7. Apr 2008, 07:19
http://www.delphipraxis.net/internal...=868231#868231
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 04:53 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