2017-08-15 18 views
1

我正在運行此查詢以從admin表中選擇行,其中display_on_website值爲表中的值。通過另一個表中的值對錶中的SQL順序行

SELECT 
       a.sequence as sequence, 
       CONCAT(a.forename, ' ', a.surname) as name, 
       a.position as position 
      FROM 
       admin a, admin_meta am 
      WHERE 
       a.disabled = '' AND 
       a.sequence = am.user AND 
       am.field = 'display_on_website' AND 
       am.value = '1' 

我有admin_meta表中的行因爲這是website_order每個用戶 - 我怎麼可以爲了這個價值?

+0

'ORDER BY am.website_order' ?? –

+1

在過去的幾十年裏,誰仍然在教導或鼓勵可怕的逗號連接句法? (「可怕」不是對你的批評,只是語法本身。) – Uueerdo

+0

,不會工作,因爲它將是另一個SELECT查詢來獲得每個用戶的價值 – charlie

回答

2

您需要加入admin_meta表兩次,一次獲得display_on_website值,再次獲取website_order值以排序。

SELECT a.sequence, CONCAT(a.forename, ' ', a.surname) AS name, a.position 
FROM admin AS a 
JOIN admin_meta AS m1 on a.sequence = m1.user 
JOIN admin_meta AS m2 ON a.sequence = m2.user 
WHERE a.disabled = '' 
AND am1.field = 'display_on_website' AND am1.value = '1' 
AND am2.field = 'website_order' 
ORDER BY CAST(am2.value AS DECIMAL) 
+0

你在閱讀整個問題並讓我們看起來很糟糕。 ;) – Uueerdo

相關問題