AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [SQL] Hilfe bei Verknüpfung zweier Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL] Hilfe bei Verknüpfung zweier Tabellen

Ein Thema von Nicolai1234 · begonnen am 4. Aug 2009 · letzter Beitrag vom 7. Aug 2009
Antwort Antwort
Seite 1 von 2  1 2      
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#1

[SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 4. Aug 2009, 15:22
Hallo,

ich muss mich leider mit einem nicht-Delphi Thema an euch wenden. Ich helfe momentan bei einer Internetseite aus und muss mich dort mit PHP und einer mysql-Datenbank rumschlagen, obwohl das nicht mein Spezialgebiet ist Daher hoffe ich, dass ihr mir helfen könnt. Die Grundlagen habe ich soweit alle verstanden und eigentlich klappt auch alles ganz gut, nur an einer Stelle komme ich nicht weiter. Es geht um folgendes:

Ich habe zwei Tabellen:
Tabelle1: uid - gid
Tabelle2: uid - name - punkte - etc..

Es sind also zwei Tabellen, in denen jeweils die Spalte uid (User-ID) gleich ist.

Momentan frage ich Daten aus Tabelle2 so ab:
SELECT * FROM Tabelle2 Jetzt möchte ich aber, dass nur die Datensätze ausgewählt werden, bei denen dem User eine bestimmte gid zugeordnet ist.
Soll quasi so aussehen: (mir ist klar, dass es so leider nicht geht )
SELECT * FROM Tabelle2 WHERE gid = 1 Wie kann man denn die beiden Tabellen miteinander verknüpfen, dass die Abfrage richtig ist? Ich Blick da leider nicht ganz durch und hoffe auf eure Hilfe

Vielen Dank im Voraus
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 4. Aug 2009, 15:26
Du benötigst einen INNER JOIN
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 4. Aug 2009, 16:12
Entweder ("alte" Syntax):
SQL-Code:
SELECT T1.*, T2.*
FROM Tabelle1 T1, Tabelle2 T2
WHERE T2.uid = T1.uid
AND T1.gid = 1
oder
SQL-Code:
SELECT T1.*, T2.*
FROM Tabelle1 T1
JOIN Tabelle2 T2 ON T2.uid = T1.uid
WHERE T1.gid = 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
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 5. Aug 2009, 22:30
Vielen Dank, habs gestern noch mit dem INNER JOIN hinbekommen

Was bedeutet das alte Syntax bei deiner anderen Lösung? Geht die auch, aber stilistisch ist die andere besser? Und wenn ja, wer bestimmt, was stilistisch schöner ist?
  Mit Zitat antworten Zitat
omata

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

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 5. Aug 2009, 23:12
Die neue Syntax finde ich wesentlich schöner.
Alt und neu funktionieren bezogen auf den EQUI-JOIN in allen Datenbanken. Nur der OUTER-JOIN funktioniert in der alten Syntax nur in Oracle (Plus-Operator) sonst leider nicht. Deshalb würde ich immer die neue Variante verwenden und mir dort auch nur den LEFT-JOIN merken, der RIGHT-JOIN ist überflüssig.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 6. Aug 2009, 05:31
Man kann bei den expliziten Joins viel genauer steuern wie verknüpft wird. Implizit geht ja nur ein INNER JOIN ( Ausnahme Oracle, wie omata schon geschrieben hat)
Zitat:
nur den LEFT-JOIN merken, der RIGHT-JOIN ist überflüssig.
So pauschal würde ich das nicht sehen
Markus Kinzler
  Mit Zitat antworten Zitat
omata

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

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 6. Aug 2009, 11:18
Zitat von mkinzler:
So pauschal würde ich das nicht sehen
Ich schon, die letzten 9 Jahre bin ich ohne ausgekommen. Die beiden JOINs unterscheiden sich ja nur in der Syntax, also welche Seite der Verknüpfung wird mit NULL aufgefüllt.

Edit: Man kann sich das Leben natürlich auch schwerer machen, und beide verschachtelt benutzen (siehe Access)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 6. Aug 2009, 11:21
Es könnte aber ein Fall audtreten, wo man es benötigt.
Es ist wie mit While vs Repeat..Until, man kann das meiste mit einer Schleifenart lösen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#9

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 6. Aug 2009, 11:24
Zitat von mkinzler:
Zitat:
nur den LEFT-JOIN merken, der RIGHT-JOIN ist überflüssig.
So pauschal würde ich das nicht sehen
Naja, wenn ich die Join-Bedingungen eines LEFT-JOINs vertausche und aus ... FROM a LEFT OUTER JOIN b ... ein ... FROM b LEFT OUTER JOIN a ... mache, dann hab ich ja quasi auch nen RIGHT-JOIN

BTW: Bislang bin ich auch ganz gut ohne RIGHT-JOINs augekommen 8)
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: [SQL] Hilfe bei Verknüpfung zweier Tabellen

  Alt 6. Aug 2009, 11:38
Also wenn ich auf die Schnelle eine Query aus diversen Tabellen zusammentippe, passiert es mir einfach, das ich irgendwann ein RIGHT JOIN brauche. Ich könnte zwar die Logik umdrehen, und von vorne anfangen, um puristisch auf das RIGHT JOIN zu verzichten, aber Zeit ist Geld und so gehts eben.

Nööööötig issses nicht, aber der Vollständigkeit halber vorhanden und praktisch.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  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 05:16 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