簡體   English   中英

從兩個MySQL表中獲取數據,並基於兩個表中的數據進行ORDER

[英]Get data from two MySQL tables and ORDER based on the data from the two tables

我迷失了試圖將兩個表連接在一起,然后返回兩個表中列排序的結果。 這是我不返回任何行的查詢:

SELECT category.name,
       client.name,
       client.member
FROM   `category`,
       `client`
       INNER JOIN `client`
               ON client.name = category.name
WHERE  catdesc = '$info'
ORDER  BY client.member,
          category.name ASC  

我想通過此查詢返回什么:

我想要一個具有特定“ catdesc”順序的名稱列表(兩個表的名稱均相同)

第一:按會員名字(ASC)排序

然后

第二:在成員之后,非成員按名稱ASC排序。

您的加入查詢不正確

SELECT 
category.name, 
client.name, 
client.member 
FROM `category`,
`client` <----- here is the issue
INNER JOIN `client` ON client.name = category.name 
WHERE catdesc ='$info' 
ORDER BY client.member, category.name ASC

這應該是

SELECT 
category.name, 
client.name, 
client.member 
FROM `category`
INNER JOIN `client` ON client.name = category.name 
WHERE catdesc ='$info' 
ORDER BY client.member, category.name ASC

您的查詢中有三個表引用,至少要對client表的引用之一賦予別名,否則,將出現“歧義列”錯誤。

不要將老式的“逗號” JOIN運算符與JOIN關鍵字混合使用。 最佳實踐是限定所有列引用,即使它們不是模棱兩可的。

您當前的查詢文本等效於:

SELECT category.name
     , client.name
     , client.member
  FROM `category`
  JOIN `client`
  JOIN `client` 
    ON client.name = category.name
 WHERE catdesc ='$info' 
ORDER BY client.member, category.name ASC

我們希望拋出一個錯誤。 我們真的希望看到更多類似的東西:

SELECT category.name
     , client.name
     , client.member
  FROM `category`
  JOIN `client`
    ON client.name = category.name
 WHERE category.catdesc = '$info'
 ORDER
    BY client.member
     , category.name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM