以下查询不会返回任何数据。无法弄清楚为什么。删除其中一个连接有效,但我无法从一个表中获取数据。
$productInfo = "SELECT stock.*, s_list.*, c_list.*
FROM stock
INNER JOIN s_list
ON stock.s_compo_id = s_list.id
INNER JOIN c_list
ON stock.c_compo_id = c_list.id
WHERE batch_id = '$productID'";
答案 0 :(得分:0)
这是您的查询:
SELECT stock.*, s_list.*, c_list.*
FROM stock INNER JOIN
s_list
ON stock.s_compo_id = s_list.id INNER JOIN
c_list
ON stock.c_compo_id = c_list.id
WHERE batch_id = '$productID'";
以下是一些我很容易想到你没有数据的原因:
batch_id
和$productID
不匹配。名字不同,为什么我认为它们指的是同一个东西呢?s_list
或c_list
(或两者)都没有匹配的记录。您正在进行内部联接,因此没有匹配的记录意味着不会返回任何行。id
列,并且不清楚它来自哪个表。 明确列出所需的列并为其指定唯一的别名。 并且,因为命名看起来不对,所以不太可能:
join
的连接条件不正确,因此没有匹配。并且,必须注意的是,您不应该将变量直接放入查询字符串中。使用参数。它不仅更安全,而且为引擎提供了缓存查询计划的机会,在多次调用时节省了工作量。
答案 1 :(得分:0)
尝试使用以下查询。
$productInfo = "SELECT stock.*, s_list.*, c_list.*
FROM stock
LEFT JOIN s_list
ON stock.s_compo_id = s_list.id
LEFT JOIN c_list
ON stock.c_compo_id = c_list.id
WHERE batch_id = '$productID'";