[英]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.