AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Frage zu SQL Komma-Join
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu SQL Komma-Join

Ein Thema von Grolle · begonnen am 16. Mai 2009 · letzter Beitrag vom 17. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#1

Frage zu SQL Komma-Join

  Alt 16. Mai 2009, 16:25
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBDAC
Hi,
select n.*, c.* FROM notes as n, correspondence as c WHERE (n.recipient=22) or (c.contact_id=22) Warum liefert WHERE hier komplett falsche Ergebnisse?

Viele Grüße ...

  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Frage zu SQL Komma-Join

  Alt 16. Mai 2009, 16:31
Weil das Eis zu kalt ist

Ich nehme an, du willst die Tabellen zusammenfassen, sodass in allen Zeilen n.recipient = c.contact_id = 22 ist? Dann musst du das auch so hinschreiben
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Frage zu SQL Komma-Join

  Alt 16. Mai 2009, 16:35
Hi,

nein ich will es so haben wie es da steht. Quasi das:
SQL-Code:
SELECT * FROM NOTES WHERE recipient=22
SELECT * FROM CORRESPONDENCE WHERE contact_id=22
zusammen in einer Tabelle.

Viele Grüße ....

  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: Frage zu SQL Komma-Join

  Alt 16. Mai 2009, 16:39
Untereinander? Dann musst du sicherstellen, dass beide irgendwie gleich benannte Spalten haben (oder das über Projektionen erzeugen) und die beiden Queries per UNION aneinaderkleben. Wenn du es nebeneinander willst, musst du die Tabellen FULL OUTER JOINen mit Bedingung False, dann funktionert es. Das Komma erzeugt ja gerade das Kartesische Produkt, also kriegst du mit der Abfrage oben auf der linken/rechten Seite jeweils mindestens ein Mal die komplette Tabelle.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Frage zu SQL Komma-Join

  Alt 16. Mai 2009, 16:41
So wie du es formuliert hast, wird aber jetzt jede Zeile der einen Tabelle mit jeder Zeile der anderen Tabelle in Beziehung gesetzt. Du musst noch zusätzlich eine Regel vorgeben, die eben dafür sorgt, dass nur die Zeilen miteinander verbunden werden, die auch etwas miteinander zutun haben. Welche Spalten der beiden Tabellen stehen denn in Beziehung zueinander?

Oder eben so...
SQL-Code:
select n.*, c.*
FROM notes as n, correspondence as c
WHERE n.recipient = c.contact_id
  AND n.recipient = 22
oder gleich ordentlich...
SQL-Code:
select n.*, c.*
FROM notes as n
INNER JOIN correspondence as c
  ON n.recipient = c.contact_id
WHERE n.recipient = 22
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Frage zu SQL Komma-Join

  Alt 16. Mai 2009, 16:43
Zitat von omata:
Welche Spalten der beiden Tabellen stehen denn in Beziehung zueinander?
Keine

  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Frage zu SQL Komma-Join

  Alt 16. Mai 2009, 18:00
Zitat von Grolle:
Zitat von omata:
Welche Spalten der beiden Tabellen stehen denn in Beziehung zueinander?
Keine
Hast du mal mein Edit oben ausprobiert?

Wie willst du die Zeilen zusammenführen?

In Spaltenform...
SQL-Code:
SELECT n.*, c.*
FROM notes n
LEFT JOIN correspondence c
  ON c.contact_id = 22
WHERE n.recipient = 22
In Zeilenform...
SQL-Code:
SELECT n.*, c.*
FROM correspondence c
LEFT JOIN (SELECT FIRST 0 * FROM notes) n
  ON 1 = 1
WHERE c.contact_id = 22
UNION
SELECT n.*, c.*
FROM notes n
LEFT JOIN (SELECT First 0 * FROM correspondence) c
  ON 1 = 1
WHERE n.recipient = 22
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Frage zu SQL Komma-Join

  Alt 16. Mai 2009, 18:14
Hi omata,
Zitat von omata:

Hast du mal mein Edit oben ausprobiert?
Habe ich jetzt erst gelesen
Zitat von omata:
Wie willst du die Zeilen zusammenführen?
In Zeilenform...
SQL-Code:
SELECT n.*, c.*
FROM correspondence c
LEFT JOIN (SELECT FIRST 0 * FROM notes) n
  ON 1 = 1
WHERE c.contact_id = 22
UNION
SELECT n.*, c.*
FROM notes n
LEFT JOIN (SELECT First 0 * FROM correspondence) c
  ON 1 = 1
WHERE n.recipient = 22
Das ist es

  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Frage zu SQL Komma-Join

  Alt 17. Mai 2009, 12:43
Hallo,

an welche Stelle muss (kann) ich denn jetzt noch ein ORDER BY packen (in beiden Tabellen ist ein Datumsfeld wonach ich sortieren will)?

Viele Grüße ...

  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Frage zu SQL Komma-Join

  Alt 17. Mai 2009, 12:52
Das gesamte Ergebnis oder die einzelnen Teile?
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:15 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