AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL Abfrage über zwei Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage über zwei Tabellen

Ein Thema von citybreaker · begonnen am 8. Mai 2012 · letzter Beitrag vom 8. Mai 2012
Antwort Antwort
Seite 2 von 3     12 3      
citybreaker
(Gast)

n/a Beiträge
 
#11

AW: SQL Abfrage über zwei Tabellen

  Alt 8. Mai 2012, 13:27
Status ist Varchar. 1 und 0 habe ich nur als Beispiel zum Testen genommen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#12

AW: SQL Abfrage über zwei Tabellen

  Alt 8. Mai 2012, 13:30
Anscheinend bin ich aktuell etwas vernagelt. Bekommst Du hiermit Datensätze angezeigt?
SQL-Code:
SELECT
  Tabelle1.ID, Tabelle1.Kunde, Tabelle1.Nummer, Tabelle2.Status
FROM
  Tabelle1
JOIN
  Tabelle2 ON Tabelle2.Tabelle1ID = Tabelle1.ID
WHERE
  Tabelle2.Status LIKE '%1%'
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
citybreaker
(Gast)

n/a Beiträge
 
#13

AW: SQL Abfrage über zwei Tabellen

  Alt 8. Mai 2012, 13:50
Dann bin ich ja zum Glück nicht der einzigste der vernagelt ist.

Damit bekomme ich keine Datensätze angezeigt. Benutze ich anstatt WHERE ein AND bekomme ich Datensätze angezeigt ohne Eintrag in Tabelle2 (1;a;100).
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#14

AW: SQL Abfrage über zwei Tabellen

  Alt 8. Mai 2012, 14:01
Das bedeutet aber doch eigentlich, dass es keine verknüpften Datensätze in Tabelle2 gibt, die eine 1 enthalten. Gleichzeitig hieße das aber, dass Du ohne die WHERE-Klausel keine Datensätze mit einer 1 irgendwo im Status-Feld sehen könntest. Falls doch, dann mache ich gerade eine riesigen Denkfehler.
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
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: SQL Abfrage über zwei Tabellen

  Alt 8. Mai 2012, 14:16
Das bedeutet aber doch eigentlich, dass es keine verknüpften Datensätze in Tabelle2 gibt, die eine 1 enthalten. Gleichzeitig hieße das aber, dass Du ohne die WHERE-Klausel keine Datensätze mit einer 1 irgendwo im Status-Feld sehen könntest. Falls doch, dann mache ich gerade eine riesigen Denkfehler.
Über diesen Stolperstein bin ich auch schon öfters gefallen

Code:
SELECT
  Tabelle1.ID, Tabelle1.Kunde, Tabelle1.Nummer, Tabelle2.Status
FROM Tabelle1
LEFT JOIN Tabelle2 
  ON Tabelle2.Tabelle1ID = Tabelle1.ID
  AND Tabelle2.Status LIKE '%1%'
WHERE NOT Tabelle2.Status IS NULL
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#16

AW: SQL Abfrage über zwei Tabellen

  Alt 8. Mai 2012, 14:17
Wozu einen OUTER JOIN, wenn man dann die NULLs wieder aussortiert?
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
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: SQL Abfrage über zwei Tabellen

  Alt 8. Mai 2012, 14:22
Stimmt eigentlich auch...aber dann ists doch mit einem INNER JOIN erledigt?!

EDIT: Hab das mal fix mit deinem SQL von oben probiert. Der bringt auf meinem MSSQL-Server wie erwartet folgendes Ergebnis:

2;b;200;1
3;c;300;1
6;xyz;600;1
Ansgar

Geändert von angos ( 8. Mai 2012 um 14:28 Uhr)
  Mit Zitat antworten Zitat
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#18

AW: SQL Abfrage über zwei Tabellen

  Alt 8. Mai 2012, 14:41
Bei mir geht es uneter Firebird 2.1 auch:

Code:
select
  t1.ID,
  t1.KUNDE,
  t1.NUMMER,
  t2.STATUS
from TABELLE1 t1
left join TABELLE2 t2 on (t2.TABELLE1_ID = t1.ID)
where (t2.STATUS like '1')
Ergebnis:

ID KUNDE NUMMER STATUS
2 b 200 1
3 c 300 1
6 xyz 600 1
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#19

AW: SQL Abfrage über zwei Tabellen

  Alt 8. Mai 2012, 14:43
Wenn ich den TE richtig verstanden habe, will er alle DS aus Tabelle1 haben zzgl. evtl. vorhandenen verknüpften aus Tabelle2, die irgendwo im Status-Feld eine 1 stehen haben.
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
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#20

AW: SQL Abfrage über zwei Tabellen

  Alt 8. Mai 2012, 14:59
Wenn ich den TE richtig verstanden habe, will er alle DS aus Tabelle1 haben zzgl. evtl. vorhandenen verknüpften aus Tabelle2, die irgendwo im Status-Feld eine 1 stehen haben.
Code:
select
  t1.ID,
  t1.KUNDE,
  t1.NUMMER,
  t2.STATUS
from TABELLE1 t1
left join TABELLE2 t2 on (t2.TABELLE1_ID = t1.ID) and (t2.STATUS like '1')
Na dann macht er aus dem 'where' ein 'and' und schon hat er, was er will:

Ergebnis:

ID KUNDE NUMMER STATUS
1 a 100 <null>
2 b 200 1
3 c 300 1
4 d 400 <null>
5 e 500 <null>
6 xyz 600 1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 00:24 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