php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.05.2008, 15:38  
Erfahrener Benutzer
 
Registriert seit: 27.08.2003
Beiträge: 449
PHP-Kenntnisse:
Fortgeschritten
GSJLink
Standard Variable aus Subselect in JOIN verwenden

Hallo,

ich habe folgenden SQL Befehl:

Code:
SELECT ticket.*,

(SELECT date FROM prefix_ticket WHERE parent = ticket.id ORDER BY id DESC LIMIT 1) AS last_date,

(SELECT user_id FROM prefix_ticket WHERE parent = ticket.id ORDER BY id DESC LIMIT 1) AS last_user_id,

user.vorname, 
user.nachname
				
FROM prefix_ticket AS ticket

LEFT JOIN prefix_user AS user
ON last_user_id = user.id
				
WHERE ticket.user_id = '1'
AND ticket.parent = '0'
				
ORDER BY ticket.id DESC
				
LIMIT 0,15;
Der Befehl soll mir alle Tickets des Users mit der ID 1 ausgeben und zusätzlichen das Datum und den Benutzer (mit Vor- und Nachname) der letzten Antwort (mit parent = ticket.id, Sortiert nach ID (DESC)) liefern.

Leider spuckt mysql_error() folgendes aus:

Zitat:
Unknown column 'last_user_id' in 'on clause'
Also kann er scheinbar die Variable, die aus dem Subselect resultiert nicht für einen JOIN verwenden.

Könnt ihr mir helfen?


mfg
Link
__________________
"Ein Script ist nur dann gut, wenn es unabhängig von der verwendeten Plattform funktioniert"
GSJLink ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.05.2008, 17:21  
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,

du kannst kein JOIN mit einem Ergebnis-Alias, sondern nur mit einer "echten" Spalte machen. Das last_user_id, das du aus dem Subselect bekommst, muss in eine WHERE-Clause.
__________________
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 24.05.2008, 17:31  
Erfahrener Benutzer
 
Registriert seit: 27.08.2003
Beiträge: 449
PHP-Kenntnisse:
Fortgeschritten
GSJLink
Standard

Etwa so?

Code:
SELECT ticket.*,
(SELECT date FROM prefix_ticket WHERE parent = ticket.id ORDER BY id ASC LIMIT 1) AS last_date,
(SELECT user_id FROM prefix_ticket WHERE parent = ticket.id ORDER BY id ASC LIMIT 1) AS last_user_id,
user.vorname, 
user.nachname
				
FROM prefix_ticket AS ticket

LEFT JOIN prefix_user AS user
ON user.id = user.id
				
WHERE ticket.user_id = '1'
AND ticket.parent = '0'
AND user.id = last_user_id
				
ORDER BY ticket.id ASC
				
LIMIT 0,15;
Dann gibt er folgenden Fehler aus:

Zitat:
Unknown column 'last_user_id' in 'where clause'

mfg
Link
__________________
"Ein Script ist nur dann gut, wenn es unabhängig von der verwendeten Plattform funktioniert"
GSJLink ist offline   Mit Zitat antworten
Alt 24.05.2008, 17:38  
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,

dein LEFT JOIN ist immer noch nicht sauber. An sich sollte das syntaktisch so aussehen:

Code:
SELECT ticket.*,
(SELECT date FROM prefix_ticket WHERE parent = ticket.id ORDER BY id ASC LIMIT 1) AS last_date,
(SELECT user_id FROM prefix_ticket WHERE parent = ticket.id ORDER BY id ASC LIMIT 1) AS last_user_id,
user.vorname,
user.nachname
            
FROM prefix_ticket AS ticket

LEFT JOIN prefix_user AS user ON ticket.user_id = user.id
            
WHERE ticket.user_id = '1'
AND ticket.parent = '0'
AND user.id = last_user_id
            
ORDER BY ticket.id ASC
            
LIMIT 0,15;
Was auch sein kann, ist, dass die Alias-Geschichte ins Höschen geht. Versuche es mal auch ohne.
__________________
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 24.05.2008, 18:48  
Erfahrener Benutzer
 
Registriert seit: 27.08.2003
Beiträge: 449
PHP-Kenntnisse:
Fortgeschritten
GSJLink
Standard

Ich hatte zwar erwartet, dass deine Lösung etwas falsches ausspuckt (wegen dem ON ticket.userid = user.id), aber sie funktioniert

Danke!


mfg
Link
__________________
"Ein Script ist nur dann gut, wenn es unabhängig von der verwendeten Plattform funktioniert"
GSJLink ist offline   Mit Zitat antworten
Alt 25.05.2008, 11:36  
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

Gerne!
__________________
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
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
[gelöst]LEFT JOIN, DINSTINCT und trotzdem doppelte?!?! stefanjann Datenbanken 10 06.02.2008 11:49
JOIN / LEFT JOIN und Co prinzli Datenbanken 12 05.11.2007 22:15
Variable in SQL Anweisung verwenden Beatbox PHP Tipps 2006 2 08.08.2006 16:32
Problem mit Inner join Jabi Datenbanken 15 09.05.2006 14:10
[Erledigt] UPDATE und Subselect??? Datenbanken 2 31.01.2006 19:06
inner join aus db PHP Tipps 2006 8 22.01.2006 01:23
Variable durch 2. Variable bestimmen Quagga PHP Tipps 2005-2 11 26.10.2005 17:34
Variable als Variable behandeln ohne den Wert zu verwenden Pain-maker PHP Tipps 2005-2 4 11.09.2005 17:28
if(isset in Variable verwenden JonathanArcher PHP Tipps 2005-2 16 31.07.2005 23:02
Tabellenname bei Join als Variable mit ausgeben Datenbanken 0 22.07.2005 20:56
[Erledigt] Variable in DB Datenbanken 1 17.04.2005 15:01
Variable in einer Variable Beatbox PHP Tipps 2005 7 15.01.2005 15:55
Warum wird Variable nicht übergeben??? Anuschka PHP Tipps 2005 2 06.01.2005 13:22
JS Variable im HTML Code verwenden HTML, Usability und Barrierefreiheit 1 05.10.2004 08:52
Auf Variable in extern gelagerter Funktion verwenden HTML, Usability und Barrierefreiheit 6 09.09.2004 14:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
join subselect, left join subselect, subselect join, sql join subselect, sql subselect join, subselect in join, sql subselect alias, join mit subselect, join on subselect, access subselect, join with subselect, subselect left join, subselect in from, sql join on subselect, subselect in where, sql subselect variable, sub select join, subselect inner join, sql left join subselect, subselect oder join

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