大家好,
这听起来很简单,但我在这里遇到了问题。
有表格:
table_A
TA_id | TA_user | TA_hour | TA_date
和
table_B
TB_id | TB_name | TB_adress
这是查询:
$sql = mysql_query("SELECT
DISTINCT TA_user
FROM table_A
INNER JOIN table_B ON table_B.id = table_A.TA_user
WHERE TA_date LIKE '%$vardate%'
ORDER BY TA_user ASC ");
当我在数组中运行 While 循环时,应该打印的 TB_name 会导致内部联接不起作用。
有什么想法吗?
最佳答案
在我看来,给定的表 B 实体有多个表 A 记录,对吗?
顺便说一下,你的列名很糟糕...table_B.id = table_A.TA_user???检查你的数据库的人如何知道这种关系的存在?但这不是重点。
无论如何,我猜您正在尝试返回在给定日期的 table_A 中具有记录的表 B 实体?
如果是这样,distinct 应该适合你。我可能会使用 group by 来代替,因为它通常更快。但如果我理解正确的话,这应该可以达到你想要的效果。
SELECT DISTINCT table_B.TB_name
FROM table_A
INNER JOIN table_B
ON table_B.TB_id = table_A.TA_user
WHERE TA_date LIKE '%$vardate%'
ORDER BY TA_user ASC;
而且,正如 @Gordon Linoff 上面所说,带有日期字段的 LIKE 是可疑的。他的想法对我来说似乎很合适。
关于mysql - 使用 INNER JOIN 选择 DISTINCT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23970586/