我有两个表,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.

最佳答案

这有帮助吗?

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');


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

10-04 11:56