我迷失了尝试将两个表连接在一起然后返回两个表中列的排序结果。这是我没有返回任何行的查询:
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”字样。订购
FIRST:按名称排序的成员ASC
THEN
SECOND:在成员之后,非成员按名称ASC排序。
答案 0 :(得分:3)
您的联接查询不正确
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
答案 1 :(得分:1)
在查询中有三个表引用,至少需要为client
表中的一个引用赋予别名,否则,您将出现“模糊列”错误。
请勿将旧式“逗号”加入运算符与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