Hallo,
kann ich 2 Abfrageergebnisse vereinen?
D.h. ich mache eine Abfrage beispielsweise für ID, NAME und eine für ID, NACHNAME.
Anschließend möchte ich aus diesen Ergebnissen ID, NAME, ID, NACHNAME machen?
Geht das?
Grüße von JD
SQL Frage - Wo sind die Profis?
Moderator: heiner
-
- Beiträge: 9
- Registriert: Montag 2. Januar 2012, 18:15
- heiner
- Administrator
- Beiträge: 4510
- Registriert: Freitag 30. Oktober 2009, 16:44
- JVerein-Version: aktuelle Entwicklerversion
- Betriebssystem: W10
- Kontaktdaten:
Re: SQL Frage - Wo sind die Profis?
Hallo JVereinUser,
in welcher Tabelle hast du denn das Feld Nachname?
Heiner
in welcher Tabelle hast du denn das Feld Nachname?
Heiner
PS: Denkt daran, eure Vereine unter viewforum.php?f=3 vorzustellen.
-
- Beiträge: 9
- Registriert: Montag 2. Januar 2012, 18:15
Re: SQL Frage - Wo sind die Profis?
Nachname war nur ein Beispiel,heiner hat geschrieben:
in welcher Tabelle hast du denn das Feld Nachname?
Heiner
es könnte auch Strasse oder Postleitzahl heißen.
Die Frage ist dann nur, wenn es mir gelingt zwei Abfragen zu entwerfen,
die folgende Ergebnisse erzeugen,
z.B. ID, Strasse und ID, Postleitzahl,
dann würde ich basierend auf diesen Ergebnissen nochmals eine Vereinigungsmenge durchführen.
Ich meine union select wäre dazu möglich,
aber das klappt nicht.
Grüße,
JD
- heiner
- Administrator
- Beiträge: 4510
- Registriert: Freitag 30. Oktober 2009, 16:44
- JVerein-Version: aktuelle Entwicklerversion
- Betriebssystem: W10
- Kontaktdaten:
Re: SQL Frage - Wo sind die Profis?
Hallo JVereinUser,
was genau hast du vor?
Wenn du zunächst ID und Name selektierst und anschließend ID und PLZ und diese wieder über die ID verschneiden willst, kannst doch gleich ID, Name und PLZ selektieren.
Heiner
was genau hast du vor?
Wenn du zunächst ID und Name selektierst und anschließend ID und PLZ und diese wieder über die ID verschneiden willst, kannst doch gleich ID, Name und PLZ selektieren.
Heiner
PS: Denkt daran, eure Vereine unter viewforum.php?f=3 vorzustellen.
-
- Beiträge: 9
- Registriert: Montag 2. Januar 2012, 18:15
Re: SQL Frage - Wo sind die Profis?
Ich möchte in der Tabelle Zusatzfelder,
jedes Zusatzfeld als Spalte darstellen.
Bei 3 Zusatzfeldern ergeben sich 3 Spalten.
Die Lösung mit den Einzelabfragen und einer Vereinigung scheint mir am einfachsten zu sein.
JD
jedes Zusatzfeld als Spalte darstellen.
Bei 3 Zusatzfeldern ergeben sich 3 Spalten.
Die Lösung mit den Einzelabfragen und einer Vereinigung scheint mir am einfachsten zu sein.
JD
- heiner
- Administrator
- Beiträge: 4510
- Registriert: Freitag 30. Oktober 2009, 16:44
- JVerein-Version: aktuelle Entwicklerversion
- Betriebssystem: W10
- Kontaktdaten:
Re: SQL Frage - Wo sind die Profis?
PS: Denkt daran, eure Vereine unter viewforum.php?f=3 vorzustellen.
Re: SQL Frage - Wo sind die Profis?
Hallo JD,
Die Syntax schaut ungefähr so aus:
SELECT t1.ID, t1.NAME, t2.NACHNAME
FROM tabelle1 t1, tabelle2 t2
WHERE t1.ID = t2.ID;
Und das sollte es auch schon wieder gewesen sein.
Extrem wichtig ist, dass Du immer die Felder sauber ausqualifizierst - sprich: die Datenbank soll nicht raten müssen, welche "ID" aus welcher Tabelle Du meinst - sondern immer mit dem Präfix ausqualifizieren.
Diese Syntax geht übrigens nur dann, wenn es immer in BEIDEN Tabellen Sätze gibt. Wenn mal einer wo fehlt (egal ob in der ersten oder der zweiten), dann fehlt auch das Ergebnis (das ist eine der Eigenschaften des sog. INNER JOINS) - quasi eine logische UND-Verknüpfung.
Alternativ dazu gibt's die OUTER JOINS - die schreibt man ein wenig anders:
SELECT t1.ID, t1.NAME, t2.NACHNAME
FROM tabelle1 t1 LEFT JOIN tabelle2 t2
ON t1.ID = t2.ID;
Mit dem LEFT bestimmst Du, welche Tabelle die "führende" ist - sprich: In dieser Tabelle MUSS der Datensatz da sein, damit er auch ins Result set kommt. Bei der anderen ist es egal, ob der Satz da ist oder nicht.
Wenn die Begriffe aber immer verlässlich in beiden Tabellen paarweise (oder auch öfters) vorkommen, dann kannst Du aber auf den einfacheren Inner Join zurückgreifen.
LG,
Boby
ja, das geht natürlich in Standard-SQL - sogar relativ leicht.D.h. ich mache eine Abfrage beispielsweise für ID, NAME und eine für ID, NACHNAME.
Anschließend möchte ich aus diesen Ergebnissen ID, NAME, ID, NACHNAME machen?
Geht das?
Die Syntax schaut ungefähr so aus:
SELECT t1.ID, t1.NAME, t2.NACHNAME
FROM tabelle1 t1, tabelle2 t2
WHERE t1.ID = t2.ID;
Und das sollte es auch schon wieder gewesen sein.
Extrem wichtig ist, dass Du immer die Felder sauber ausqualifizierst - sprich: die Datenbank soll nicht raten müssen, welche "ID" aus welcher Tabelle Du meinst - sondern immer mit dem Präfix ausqualifizieren.
Diese Syntax geht übrigens nur dann, wenn es immer in BEIDEN Tabellen Sätze gibt. Wenn mal einer wo fehlt (egal ob in der ersten oder der zweiten), dann fehlt auch das Ergebnis (das ist eine der Eigenschaften des sog. INNER JOINS) - quasi eine logische UND-Verknüpfung.
Alternativ dazu gibt's die OUTER JOINS - die schreibt man ein wenig anders:
SELECT t1.ID, t1.NAME, t2.NACHNAME
FROM tabelle1 t1 LEFT JOIN tabelle2 t2
ON t1.ID = t2.ID;
Mit dem LEFT bestimmst Du, welche Tabelle die "führende" ist - sprich: In dieser Tabelle MUSS der Datensatz da sein, damit er auch ins Result set kommt. Bei der anderen ist es egal, ob der Satz da ist oder nicht.
Wenn die Begriffe aber immer verlässlich in beiden Tabellen paarweise (oder auch öfters) vorkommen, dann kannst Du aber auf den einfacheren Inner Join zurückgreifen.
LG,
Boby