BlackBoard » Design, Programmierung & Entwicklung » Webdesign » PHP + [MYSQL] Komplexes Tabllen joinen... » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen + [MYSQL] Komplexes Tabllen joinen...
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
inde inde ist männlich
the r33l !n[)3


images/avatars/avatar-2005.jpg

Dabei seit: 14.09.2003
Beiträge: 267
Herkunft: von da wo ihr nie hinwollt...

+ [MYSQL] Komplexes Tabllen joinen...       Zum Anfang der Seite springen

Hallo BBler!

Ich versuche gerade drei Tabellen miteinander zu verknüfen, aber es haut irgendwie nicht hin. Am besten ich schildere mal kurz wie ich mir das vorstelle:

Es gibt 3 Tabellen:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
TAB1:
// Enthält Daten aus einem Formular
id
name
email
betr_pre
betr
savetime
msg


code:
1:
2:
3:
4:
5:
TAB2:
// Enthält Präfixe für den Betreff
id
betr


code:
1:
2:
3:
4:
5:
6:
7:
8:
TAB3:
// KANN eine Antwort auf msg in TAB enthalten, muss aber nicht
id
msg_id
acpuser_id
savetime
resp


Nun möchte ich folgendes erreichen:

Anfragen aus TAB1 sollen ausgelesen werden, die die folgende Bedinung erfüllen:

Ihre eigene id (TAB1.id) darf nirgends in der TAB3.msg_id vorkommen

Weiterhin sollen anhand der TAB1.betr_pre aus TAB2 das zugehörige TAB2.betr ausgewählt werden

Wie fragt man so etwas ab?

__________________
MfG

the r33l !n[)3 [ http://www.indetonation.de ]

Durch Frauen wird immer alles nur noch schwieriger!
Odysseus (in "Troja")
19.04.2005 22:12 inde ist offline E-Mail an inde senden Beiträge von inde suchen
LX LX ist männlich
El Comandante en Jefe


images/avatars/avatar-2290.gif

Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx

Achtung RE: + [MYSQL] Komplexes Tabllen joinen...       Zum Anfang der Seite springen

Versuch's mal mit:

SELECT tab1.name, tab1.email, tab1.msg, tab2.betr FROM tab1, tab2, tab3 WHERE tab1.id<>tab3.msg_id AND tab1.betr_pre=tab2.id

Die Spalte "betr" in tab1 ist BTW überflüssig.

__________________
JS-Games.de - Misled Scripting Skills Gone Mad | Meine Filmkritiken | Urban Photography
Kommt mal in den IRC-Channel: irc.eu.freenode.net | Port 6667 | #blackboard

"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

19.04.2005 22:32 LX ist offline E-Mail an LX senden Homepage von LX Beiträge von LX suchen
inde inde ist männlich
the r33l !n[)3


images/avatars/avatar-2005.jpg

Dabei seit: 14.09.2003
Beiträge: 267
Herkunft: von da wo ihr nie hinwollt...

Themenstarter Thema begonnen von inde
      Zum Anfang der Seite springen

Hm, funktioniert irgendwie net. Kann es daran liegen, dass TAB3 noch keine Zeilen enthält? Dürft ja aber kaum ne Rolle spielen, oder? Die Spalte betr in TAB1 brauch ich, da hier noch ein vom User selbst bestimmter Betrefftext reimkommt.

edit

irgendwie hats funktioniert, als ich in die TAB3 eine Zeile eingefügt habt... bin zwar net 100% zufrieden aber es haut hin. Danke LX!

edit²

Zja, irgendwie funzt es doch net ganz so... TAB1 Zeilen, deren ID in TAB3.msg_id vorkommt werden immernoch ausgegeben. Irgendwas is da falscht. Abgesehen davon werden Datensätze dreimal ausgegeben, obwohl er nur einmal in der tabelle TAB1 is...

Hier mal die komplette Anfrage:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
$sql "SELECT
    tab2.id, tab2.name, tab2.email, tab2.betr_pre,
    tab2.betr, tab2.savetime, tab2.ip, tab2.msg, tab3.betr AS betr_pre
   FROM
    ".$TAB."contact_resp AS tab1,
    ".$TAB."contact_msg AS tab2,
    ".$TAB."contact_betr AS tab3
   WHERE
    tab2.id <> tab1.msg_id
    AND tab2.betr_pre = tab3.id
   ORDER BY
    $ordercol $orderdir
    ";


Gerade habe ich noch was rausgefunden:

Die anzahl, wieoft EIN UND DIESELBE Zeile aus TAB1 (im Source tab2) ausgegeben wird richtet sich danach wie viele Zeilen die TAB3 (im Source tab1) hat. Für "k" Zeilen in TAB3 wird der Datensatz mit ID X also "k"-mal ausgegeben. Wenn in TAB3.msg_id die ID von TAB1.id "n"-mal existiert ist diese Zahl "k"-"n". Ich hoffe jemand findet den Fehler...

__________________
MfG

the r33l !n[)3 [ http://www.indetonation.de ]

Durch Frauen wird immer alles nur noch schwieriger!
Odysseus (in "Troja")

Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von inde: 20.04.2005 20:18.

19.04.2005 22:43 inde ist offline E-Mail an inde senden Beiträge von inde suchen
inde inde ist männlich
the r33l !n[)3


images/avatars/avatar-2005.jpg

Dabei seit: 14.09.2003
Beiträge: 267
Herkunft: von da wo ihr nie hinwollt...

Themenstarter Thema begonnen von inde
      Zum Anfang der Seite springen

Sorry dass ich den Thread pushe aber hat echt keine ne Idee, das kann doch net unmöglich sein??? Hier gibts doch Leute die das können, oder? Heeeeelp!

__________________
MfG

the r33l !n[)3 [ http://www.indetonation.de ]

Durch Frauen wird immer alles nur noch schwieriger!
Odysseus (in "Troja")
23.04.2005 13:04 inde ist offline E-Mail an inde senden Beiträge von inde suchen
Deef Deef ist männlich
...


Dabei seit: 24.08.2002
Beiträge: 431

      Zum Anfang der Seite springen

Zitat:
Original von inde
irgendwie hats funktioniert, als ich in die TAB3 eine Zeile eingefügt habt... bin zwar net 100% zufrieden aber es haut hin. Danke LX!


Liegt daran, dass Du normale JOINS verwendet, deren Bedingung es ist, dass in allen "gejointen" Tabellen Datensaetze vorhanden sind, die die Bedingung erfuellen. Loesung: LEFT JOIN und entsprechende ON-Bedingung.

So in etwa:

code:
1:
2:
3:
4:
5:
SELECT t1.name, t1.email, t1.was_auch_immer from table_1 t1, table_2 t2
  LEFT JOIN table_3 t3 ON t1.id<>t3.msg_id
  WHERE t1.id = t2.id 


__________________
Was sagen uns Signaturen?! 1.Ich kann Latein 2.Ich bin umheimlich tiefgründig 3.Ich kann googlen 4.Ich lese die Lyrics der Lieder die ich höre 5.Ich schreibe und denke mir Scheisse aus die keiner lesen will...
18.06.2005 02:27 Deef ist offline E-Mail an Deef senden Beiträge von Deef suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Webdesign » PHP + [MYSQL] Komplexes Tabllen joinen...

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH