php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.07.2008, 23:27  
Benutzer
 
Registriert seit: 13.07.2008
Beiträge: 30
nystagmussen befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] LEFT JOIN auf mehrere Spalten

Hallo,
ich stehe vor dem Problem, dass zwei Tabellen mehr als jeweils eine Spalte verbindet. Es soll von der Tabelle A ausgelesen werden. Dabei soll noch Information von B hinzugezogen werden. Jedoch muss jeweils die entry_id und die user_id übereinstimmen, um die Zeile richtig einander zuordnen zu können. Bsp:

SELECT tab_a.title
FROM tab_a LEFT JOIN tab_b
ON tab_a.entry_id=tab_b.entry_id, tab_a.user_id=tab_b.user_id
WHERE ...

Leider führt das zu einem Fehler. Mit "AND" statt dem Komma in der "ON"-Zeile erscheint kein Fehler, jedoch stimmt die Zuordnung nicht. Wie kann man das lösen?

Grüße
Nystagmussen
nystagmussen ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 22.07.2008, 00:42  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.654
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo,

aus dem Stegreif würde ich dir dazu raten, die Mehrfach-Bedingung in einzelne JOINs zu formulieren. Der Lexer müsste das sauber auflösen.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 22.07.2008, 00:48  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Die "einfachere" Teilbedingung in die ON Bedingung stecken und die andere in die WHERE Bedingung.
"entry_id", id heißt "eindeutig"? Dann ist das vermutlich die "einfachere" Bedingung.
Code:
SELECT
  tab_a.title
FROM
  tab_a
LEFT JOIN
  tab_b
ON
  tab_a.entry_id=tab_b.entry_id
WHERE
  tab_a.user_id=tab_b.user_id
  AND ...
edit: Das sieht das MySQL Manual anders.
MySQL :: MySQL 5.1 Reference Manual :: 12.2.7.1 JOIN Syntax
Zitat:
The conditional_expr used with ON is any conditional expression of the form that can be used in a WHERE clause. Generally, you should use the ON clause for conditions that specify how to join tables, and the WHERE clause to restrict which rows you want in the result set.

Geändert von David (22.07.2008 um 00:56 Uhr).
David ist offline   Mit Zitat antworten
Alt 22.07.2008, 08:05  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nystagmussen Beitrag anzeigen
Mit "AND" statt dem Komma in der "ON"-Zeile erscheint kein Fehler, jedoch stimmt die Zuordnung nicht.
das kann nicht sein, bzw wenn das so ist, dann stimmt sonst etwas nicht. Mit der Version von David wirst du genau das gleiche Resultat erhalten. Da bei die die Attribute in beiden Tabellen gleich heissen, würde ich die USING()-Funktion vorziehen:
PHP-Code:
SELECT
  tab_a
.title
FROM
  tab_a
LEFT JOIN
  tab_b USING
(entry_iduser_id)
WHERE
... 
Das ändert aber am Resultat auch nichts.
__________________
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
Left Join.. mit ON 2 Spalten holen? kleenerandi PHP Tipps 2008 0 31.03.2008 22:48
WHERE-Clause im Left Join cycap Datenbanken 2 06.11.2007 11:06
JOIN / LEFT JOIN und Co prinzli Datenbanken 12 05.11.2007 22:15
LEFT OUTER JOIN auf Nicht-Tabelle inu Datenbanken 15 29.03.2007 20:21
[solved] LEFT JOIN - #1066 - Not unique table/alias moose Datenbanken 6 12.12.2006 06:41
[gelöst] LEFT JOIN und trotzdem nicht alle Sätze da?!? stefanjann Datenbanken 3 24.10.2006 11:32
Problem mit Inner join Jabi Datenbanken 15 09.05.2006 14:10
Left outer join, timestamps php-newbie83 Datenbanken 29 27.04.2006 09:29
LEFT OUTER JOIN für mehr als 2 Tabellen ? Alpha Centauri Datenbanken 4 05.04.2006 16:18
inner join zeigt gleiche spalten nur 1x Datenbanken 3 22.02.2006 17:11
Select Problem Datenbanken 17 16.01.2006 21:54
[Erledigt] LEFT JOIN Query Bildung Datenbanken 6 04.11.2005 15:24
[Erledigt] LEFT JOIN Problem Datenbanken 11 21.03.2005 16:36
left outer join Problem Datenbanken 5 21.01.2005 17:25
den letzte(grösten) eintrag aus LEFT JOIN Datenbanken 2 24.07.2004 18:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql join mehrere spalten, left join mehrere spalten, mysql join on mehrere spalten, join mehrere spalten, mysql join mehrere spalten, join über mehrere spalten, mysql left join mehrere spalten, sql left join mehrere spalten, inner join mehrere spalten, join mit mehreren spalten, join über zwei spalten, sql join über 2 spalten, sql join auf zwei spalten, sql inner join mehrere spalten, join zwei spalten, join 2 spalten, sql join 2 spalten, join mit 2 spalten, left outer join mehrere spalten, mysql join zwei spalten

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