php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.05.2005, 16:53  
Gast
 
Beiträge: n/a
Standard [Erledigt] Join mit 3 Tabellen

Hi,
Ich habe ein Problem beim auslesen aus 3 Tabellen:

Das funktioniert:

Code:
$sql="SELECT members.user_id, members.der_rest FROM ".$db.".documents
	  INNER JOIN ".$db.".documentright ON documents.id=documentright.doc_id
	  INNER JOIN ".$db.".members ON documentright.user_id=members.user_id
	  members.user_id='".$_GET['user_id']."'";
jetzt will ich den Rest aus der Tabelle documents über eine neue Abfrage ausgeben lassen.
Da aber nicht alle Daten aus der Tabelle documents eine ID in der Tabelle documentright haben, weil sie noch keinem User zugeordnet wurden, stehe ich im Moment vor einer Wand. Ich denke mal, es ist kein großes Problem aber irgendwie habe ich im Moment keine Idee (Denkblockade oder sowas).

Wenn jemand einen Denkanstoß hat ...
Danke im voraus

Gruß D.
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.05.2005, 17:21  
Gast
 
Beiträge: n/a
Standard

versuche mal anstatt einem INNER JOIN ein OUTER JOIN - das nimmt auch datensätze mit, die in einer Tabelle keine einträge haben (die haben dann entsprechend NULL als Wert)
  Mit Zitat antworten
Alt 16.05.2005, 17:30  
Gast
 
Beiträge: n/a
Standard

Da gibt er mir ne Fehlermeldung aus.
Bei LEFT OUTER JOIN bekomme ich nur die anderen Datensätze, die in der Tab. documentright stehen.

Gruß D.
  Mit Zitat antworten
Alt 16.05.2005, 17:32  
Gast
 
Beiträge: n/a
Standard

Kehre die Reihenfolge um - RIGHT OUTER JOIN - es kommt immer darauf an, welche Tabelle mit welcher zuerst gejoint wird.
  Mit Zitat antworten
Alt 16.05.2005, 17:35  
Gast
 
Beiträge: n/a
Standard

Muss noch was hinzufügen:

Die Einträge, die die nach deinem Beispiel NULL als Wert hätten sollen ja gerade angezeigt werden, weil das die Einträge sind, die bei der vorherigen Abfrage nicht berücksichtigt werden.
  Mit Zitat antworten
Alt 16.05.2005, 17:41  
Gast
 
Beiträge: n/a
Standard

Vertauschen hat auch nichts gebracht
  Mit Zitat antworten
Alt 16.05.2005, 17:57  
Gast
 
Beiträge: n/a
Standard

Hast du auch die JOIN-Reihenfolge geändert? mal die User nach vorne gezogen, geändert, welche Tabelle mit welcher über welche Spalte geändert wird? Desweiteren kannst du dir ausrechnen, wo NULL war, wenn in den restlichen Spalten Daten vorhanden sind. Wenn du phpmyadmin hast kannst du das QUERY übrigens gut testen!
  Mit Zitat antworten
Alt 16.05.2005, 18:17  
Gast
 
Beiträge: n/a
Standard

Ich hab die Reihenfolge der Joins und der Tabellen geändert (hab glaube ich alle Möglichkeiten durch)
Das einzige was ich hinbekomme ist entweder die Einträge die den anderen Usern zugewiesen wurden oder alle Einträge.

Zum besseren Verständnis:

documents = alle Einträge
documentright = Einträge die den Usern zugewiesen werden
members = User

Ich habe z.B. 20 Einträge in documents,
davon habe ich 5 Einträge an die User vergeben.

User1 = 2 Einträge
User2 = 3 Einträge

Jetzt rufe ich die zugewiesenen Einträge von User1 auf.
In einer anderen Tabelle sollen jetzt alle anderen Einträge inklusive User2 angezeigt werden (18 Einträge), weil diese Einträge zu Verfügung stehen sollen, wenn ich User1 weitere Einträge zuordnen möchte

Ich hoffe es macht die Sache einfacher.

Gruß D.
  Mit Zitat antworten
Alt 16.05.2005, 18:24  
Gast
 
Beiträge: n/a
Standard

Wäre besser, wenn du die Datenbankstruktur angeben könntest, ansonsten ist es auch sehr schwer für mich, solche sachen aus dem Stehgreif zu machen.
  Mit Zitat antworten
Alt 16.05.2005, 18:32  
Gast
 
Beiträge: n/a
Standard

OK,


documents.id = documentright.doc_id

documentright.user_id = members.user_id


Tabelle documentright (zur Vermittling zwischen documents und members)

insgesamt 3 Spalten:

id | user_id | doc_id
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
join über 2 db oder tabellen einer db - performance nixahnung Datenbanken 9 23.02.2008 13:03
MySQL Join mit 3 Tabellen quichibo Datenbanken 2 18.10.2007 10:58
JOIN problem 2 tabellen - zeile(tab1) zu spalte(tab2) Ministry Datenbanken 7 31.05.2006 10:31
Problem mit Inner join Jabi Datenbanken 15 09.05.2006 14:10
LEFT OUTER JOIN für mehr als 2 Tabellen ? Alpha Centauri Datenbanken 4 05.04.2006 16:18
2 Tabellen: Left outer join??? Datenbanken 2 14.09.2005 13:11
JOIN über 3 Tabellen CSS Datenbanken 4 22.08.2005 19:15
3 Tabellen mit JOIN verknüpfen? becks123 Datenbanken 6 13.08.2005 00:05
[gelöst] Daten aus zwei Tabellen, join geht nicht!? PHP Tipps 2005-2 3 14.07.2005 09:50
INNER JOIN mit 4 tabellen ??? Dragon26mFR Datenbanken 5 01.05.2005 18:51
Join aus drei Tabellen Datenbanken 9 04.03.2005 10:02
Ich bekomme nen einfachen JOIN von 2 Tabellen nicht hin. pino Datenbanken 1 06.01.2005 21:09
Join aus 3 Tabellen mit nur einer Verknüpfung? Datenbanken 7 24.09.2004 18:25
Abfrage über 2 Tabellen / Join agrajag Datenbanken 2 14.09.2004 23:05
[Erledigt] Join für Select Count(`id`)-Abfrage über 4 Tabellen Datenbanken 4 10.07.2004 18:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
phpmyadmin inner join, welches join über drei tabellen phpmyadmin, left outer join 3 tabellen, php inner join 3 tabellen, inner join 3 tabellen, inner join über 3 tabellen, left outer join vertausche reihenfolge, phpmyadmin tabellen joinen, outer join mit drei tabellen

Alle Zeitangaben in WEZ +1. Es ist jetzt 03:45 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.