为什么这个简单的加入不起作用? (MySQL的)

时间:2010-02-08 05:24:42

标签: php sql mysql database

我有两个表,classifiedfordon

classified table:
classified_id (PK)
etc...

fordon table:
id (PK)
classified_id (FK)

我尝试使用此代码:

SELECT * FROM classified, fordon WHERE classified.ad_id IN ('$solr_id_arr_imploded') AND classified.classified_id=fordon.classified_id
顺便说一下,数组是一组从solr返回的ad_id:s,没关系,这不是问题......

然后我在while循环中使用mysql_fetch_array来显示所有结果:

while($row = mysql_fetch_array($qry_result)){

但是当我尝试回显表fordon内的某些内容时,则无法找到索引错误。但是表classified内的任何内容都可以回应!

有什么想法吗?

由于

更新

   while($row = mysql_fetch_array($qry_result)){
   echo $row['type']; // This doesn't work, because the 'type' column is inside the 'fordon' table
   echo $row['headline']; // This does work because it's inside 'classified' table.

1 个答案:

答案 0 :(得分:1)

这有帮助吗?

SELECT * 
FROM classified c
INNER JOIN fordon f ON c.classified_id=f.classified_id
WHERE classified.ad_id IN ('$solr_id_arr_imploded');

此外,使用它通常不是一个好主意:SELECT *。最好只选择你想要的元素,或者在你得到的所有表的上下文中使用*,例如

SELECT classified.* 
FROM classified c
INNER JOIN fordon f ON c.classified_id=f..classified_id
WHERE classified.ad_id IN ('$solr_id_arr_imploded');

当您使用毯子*进行连接时,您将获得所有表格中的每个字段。