2011-12-15 1 views
2

を持っている必要があります。すべての派生テーブルは、私は次のクエリを持っている独自のエイリアス

SELECT `snap`.`ID`, `user`.`username`, `vote`.`type` 
FROM (`snap`) JOIN `user` as u ON `u`.`ID` = `snap`.`user` 
LEFT JOIN (select * from vote where user = "18") as vote ON `snap`.`ID` = `vote`.`snap` 
JOIN (SELECT CEIL(MAX(ID)*RAND()) AS ID FROM snap)) AS x ON `snap`.`ID` => `x`.`ID` 
WHERE `snap`.`active` = 0 LIMIT 1 

それは私が最後のJOINを追加うまくそれまでは働きました。今私はエラーを取得する: "すべての派生テーブルは、独自のエイリアスを持っている必要があります"。私はすべてのテーブルがエイリアスを必要としているため、 "S"または別の場所に置く必要があることがわかっていますが、このクエリではどのように行うのかわかりません。

答えて

4

スナップ後に余分な閉じ括弧があるようです。 2つの閉じ括弧の代わりに1にする必要があります。

SELECT `snap`.`ID`, `user`.`username`, `vote`.`type` 
FROM (`snap`) JOIN `user` as u ON `u`.`ID` = `snap`.`user` 
LEFT JOIN (select * from vote where user = "18") as vote ON `snap`.`ID` = `vote`.`snap` 
JOIN (SELECT CEIL(MAX(ID)*RAND()) AS ID FROM snap) AS x ON `snap`.`ID` = `x`.`ID` 
WHERE `snap`.`active` = 0 LIMIT 1 
+0

Blimey、それは誤解を招くようなパースエラーの1つの経糸です! –

+0

ええ、私はそれが働いている。本当に本当にありがとう!! Btw、私はまた、他のエラーを与えたので、=>を変更しました。 – Bob

1

正しい構文は次のとおりです。

SELECT `snap`.`ID`, `user`.`username`, `vote`.`type` 
FROM (`snap`) JOIN `user` as u ON `u`.`ID` = `snap`.`user` 
LEFT JOIN (select * from vote where user = "18") as vote ON `snap`.`ID` = `vote`.`snap` 
JOIN (SELECT CEIL(MAX(ID)*RAND()) AS ID FROM snap) AS x ON `snap`.`ID` = `x`.`ID` 
WHERE `snap`.`active` = 0 LIMIT 1 
関連する問題