Hämta från & till från samma inner join

Databaser & SQL

12 svar · 199 visningar · startad av Pace

Medlem sedan juni 20019 024 inlägg
Trådstart#1

Jag hämtar både från vem och till, ett meddelande har skickats. Namnen ligger i samma tabell (PaceBoard_Members) och meddelandena ligger i PaceBoard_Messages.

	SQL = "SELECT Message_ID, M_Subject, M_PostDate, fromUser.M_Name, toUser.M_Name" & _
		" FROM PaceBoard_Messages" & _
		" LEFT JOIN PaceBoard_Members AS fromUser ON PaceBoard_Messages.Author_ID = PaceBoard_Members.Member_ID" & _
		" LEFT JOIN PaceBoard_Members AS toUser ON PaceBoard_Messages.Reciever_ID = PaceBoard_Members.Member_ID" & _
		" ORDER BY Author_ID, M_PostDate DESC"

Så här tänkte jag mig (?), men får felmeddelandet [MyODBC]Column: 'Message_ID' in field list is ambiguous

Medlem sedan dec. 200012 464 inlägg
#2

Och message_ID finns bara i PaceBoard_Messages ? Om det är så, så tycker jag att det är fel i Mysql.

Du får väl kvalificera kolumnen.

Medlem sedan juni 20019 024 inlägg
#3

Hur menar du med att kvalificera?

Medlem sedan dec. 200012 464 inlägg
#4

tabellnamn.kolumnnamn

Medlem sedan juni 20019 024 inlägg
#5

När jag gör det (PaceBoard_Messages.Message_ID) får jag Unknown table 'PaceBoard_Members' in on clause

Medlem sedan juni 20019 024 inlägg
#6

Lyckades lösa det, hade ju glömt att tilldela kolumnerna det nya namnet.
Tack ändå LarsG!

	SQL = "SELECT PaceBoard_Messages.Message_ID, M_Subject, M_PostDate, fromUser.M_Name, toUser.M_Name" & _
		" FROM PaceBoard_Messages" & _
		" LEFT JOIN PaceBoard_Members AS fromUser ON PaceBoard_Messages.Author_ID = fromUser.Member_ID" & _
		" LEFT JOIN PaceBoard_Members AS toUser ON PaceBoard_Messages.Reciever_ID = toUser.Member_ID" & _
		" ORDER BY Author_ID, M_PostDate DESC"
Medlem sedan juni 20019 024 inlägg
#7

Hmmm, försökte köra samma kod i Access. Får följande fel:

Microsoft JET Database Engine (0x80040E14)
Syntaxfel (operator saknas) i frågeuttrycket 'PaceBoard_Messages.Author_ID = fromUser.Member_ID LEFT JOIN PaceBoard_Members AS toUser ON PaceBoard_Messages.Reciever_ID = toUser.Member_ID'.

Medlem sedan dec. 200012 464 inlägg
#8

Welcome to the standardized word of database management systems.

SQL = "SELECT PaceBoard_Messages.Message_ID, M_Subject, M_PostDate, fromUser.M_Name, toUser.M_Name" & _
" FROM (PaceBoard_Messages" & _
" LEFT JOIN PaceBoard_Members AS fromUser ON PaceBoard_Messages.Author_ID = fromUser.Member_ID)" & _
" LEFT JOIN PaceBoard_Members AS toUser ON PaceBoard_Messages.Reciever_ID = toUser.Member_ID" & _
" ORDER BY Author_ID, M_PostDate DESC"

Det verkar som Access kräver att man använder parenteser om man har flera join. Jag har också för mig att Mysql inte tillåter att man har parenteser på det viset.

Medlem sedan juni 20019 024 inlägg
#9

Jag har också för mig att Mysql inte tillåter att man har parenteser på det viset.

Jodå, i detta fallet fungerade det i alla fall bra i både MySQL och Access. Än en gång; tack!

Medlem sedan dec. 200012 464 inlägg
#10

Vilken Mysql-version använder du?

Medlem sedan juni 20019 024 inlägg
#11

3.23.43

Medlem sedan dec. 200012 464 inlägg
#12

Okej, det var någon som hade problem med det, men det var väl någon äldre version.
3.23.43 tyder ju på att dom släpper saker ganska ofta.

Medlem sedan juni 20019 024 inlägg
#13

3.23.43:an lär väl vara den senaste versionen som anses vara "stabil". Det finns ju en 4:a också om jag inte minns fel.

254 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)