php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.02.2005, 21:40  
Gast
 
Beiträge: n/a
Standard Join aus drei Tabellen

Hallo,

ich möchte eine Abfrage aus drei Tabellen gleichzeitig starten.

Zitat:
SELECT t1.*, t2.*
FROM t1 LEFT JOIN t2
ON t1.id= t2.id
WHERE t1.datum > DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)
ORDER BY t1.datumASC
Soweit, so gut!

Nun möchte ich aus t3 noch ne Info haben mit t1.info = t3.info und eine weitere Info mit t2.info2 = t3.info2.

Wer kann mir helfen?

Vielen Dank!
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.02.2005, 08:48  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

mal

ON t1.id= t2.id AND t1.info = t3.info AND t2.info2 = t3.info2

versucht ?

Auszug aus dem Manual
Code:
 Der ON-Bedingungscode ist jeglicher Bedingungscode der Form, wie er auch in einer WHERE-Klausel benutzt werden kann.
mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 28.02.2005, 13:38  
Gast
 
Beiträge: n/a
Standard

Und wie würde die Abfrage im Bereich
Code:
SELECT t1.*, t2.* 
FROM t1 LEFT JOIN t2
aussehen?
  Mit Zitat antworten
Alt 28.02.2005, 13:47  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

ich würde sowas einfach in phpmyadmin ausprobieren :P bis es klappt und dann mal drüber nachdenken was ich gemacht hab, der weg von hinten ist teilweise einfacher :P
oder halt mal im manual nachschauen

Code:
SELECT 
    t1.*, t2.*, t3.* 
FROM 
    t1 LEFT JOIN t2 LEFT JOIN t3
ON t1.id= t2.id AND 
    t1.info = t3.info AND 
    t2.info2 = t3.info2 
WHERE 
    t1.datum > DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)
ORDER BY 
    t1.datum ASC
ist eine unversuchte idee :P

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 28.02.2005, 13:59  
Gast
 
Beiträge: n/a
Standard

@ robo47: So funktionierts leider nicht, trotzdem danke für deine Hilfe!

Hat vielleicht jemand eine andere Idee?
  Mit Zitat antworten
Alt 28.02.2005, 14:19  
Gast
 
Beiträge: n/a
Standard

Zeige deine Tabellen und sag was mit was verknüpft werden muss. Mal wird von ID mal von Info gesprochen. Was jetzt wirklich die Daten verbindet ist nicht genau zu lesen. Ausserdem stimmt der Lösungsvorschlag von ROBO. Wenn es nicht funktioniert dann sag mal was nicht funktioniert.
  Mit Zitat antworten
Alt 03.03.2005, 11:39  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

also ich würde sagen die lösung ist schlicht und einfach die, dass man mit left join keine 3 tabellen verbinden kann, hocke grade an einem problem und mein ansatz war die ganze zeit:
Code:
SELECT
*
FROM
  mod_nl_cronmanagement AS t1 LEFT JOIN
  mod_nl_groups AS t2 LEFT JOIN
  mod_nl_letters AS t3 
ON
  t1.PoolID = t2.nlgID AND t1.LetterID = t3.nllID
LIMIT 10
dann bin ich dazu übergestiegen, nach über einer stunde manual lesen und ausprobieren:

Code:
SELECT
*
FROM
  mod_nl_cronmanagement AS t1 JOIN
  mod_nl_groups AS t2 JOIN
  mod_nl_letters AS t3 
ON
  t1.PoolID = t2.nlgID AND t1.LetterID = t3.nllID
LIMIT 10
und siehe da, das query funktioniert
robo47 ist offline   Mit Zitat antworten
Alt 03.03.2005, 12:36  
Gast
 
Beiträge: n/a
Standard

Hallo,
ist das nicht die 'sauberste' und übersichtlichste Lösung für einen Left Join aus drei Tabellen:

Code:
"SELECT var1, var2, var3 FROM tab1 LEFT JOIN tab2 ON id2=id1 LEFT JOIN tab3 ON id3=id1 WHERE ...."
  Mit Zitat antworten
Alt 03.03.2005, 12:42  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

aha daran hab ich nicht gedacht :P
robo47 ist offline   Mit Zitat antworten
Alt 04.03.2005, 10:02  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Nur, wenn ich die Frage recht verstehe, geht es nicht um drei, sondern um vier Tabellen, auch wenn zwei davon dieselben sind. Das sähe dann etwa so aus:
Code:
SELECT a.feld1, a.feld2, ..., b.feld1, ..., c.feld1, c.feld2, ..., d.feld, ...
    FROM t1 a
    LEFT JOIN t2 b ON a.id = b.id
    LEFT JOIN t3 c ON a.id = c.id
    LEFT JOIN t3 d ON b.id = c.id
    WHERE a.datum > DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)
    ORDER BY a.datum ASC;
__________________
Gruss
L
lazydog ist offline   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
Abfrage über zwei Tabellen (m. JOIN?) Spiff Datenbanken 3 13.02.2006 09:32
2 Tabellen: Left outer join??? Datenbanken 2 14.09.2005 13:11
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
[Erledigt] Join mit 3 Tabellen Datenbanken 21 16.05.2005 23:20
INNER JOIN mit 4 tabellen ??? Dragon26mFR Datenbanken 5 01.05.2005 18:51
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
join über 3 tabellen anleitung, join drei tabellen, zend framework join über 3 tabellen, zend mehrere joins gleichzeitig, join syntax drei tabellen, zend select join über mehrere tabellen, select * join drei tabellen, joins in zend ueber drei tabellen, join verknüpfung mit drei tabellen

Alle Zeitangaben in WEZ +1. Es ist jetzt 07:05 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.