PHP中的多对多DB的SQL查询

时间:2012-07-12 17:07:02

标签: php mysql sql

enter image description here

SQL查询以显示与pages_learn_more ID相关的所有tool_tip_links?

如何正确构建此查询?

 $SQL = 
    "SELECT ptt.tool_tip_link
    FROM pages_tool_tip ptt
    JOIN pages_to_pages ptp
    ON ptp.tool_tip_id = ptt.tool_tip_id
    WHERE ptp.learn_more_id = 2";

    $result = mysql_query($SQL); // or die(mysql_error()); 


     while ($db_field = mysql_fetch_array($result))
    {   
   $reference_keys   =     $db_field['tool_tip_link'];  
        }
      echo $reference_keys;

如何组合这些查询以使其清洁高效?谢谢你的帮助..

-------------------------------------- UPDATE -------- -------------------------- 使用此代码:

    "SELECT ptt.tool_tip_link
    FROM pages_tool_tip ptt
    JOIN pages_to_pages ptp
            ON ptp.tool_tip_id = ptt.tool_tip_id
    JOIN pages_learn_more plm
            ON plm.id = ptp.learn_more_id
    WHERE plm.id = 2";

应该给我看3个tool_tip_links。然而,它仅返回DB中的最后一个字段,即4 - > LINK 4

enter image description here

那么我如何获得所有链接,而不仅仅是最后一个? ty再次..

-------------------------------------- UPDATE -------- --------------------------

当我回显出mysql_num_rows时,它正确显示为id#2的3。

那么我需要显示所有三行链接的代码? LOOP ARRAY? 我没有得到它,因为它应该已经在我的数组中循环。我可以回复$reference_keys还是应该做些不同的事情?

我还尝试了foreach并返回了错误。我究竟做错了什么?请指教。

更多数据库视图 - >希望它有助于找到决心..

this is the pages_learn_more table

this is the pages tooltip table

2 个答案:

答案 0 :(得分:2)

根据您的标准:

  

SQL查询,显示与pages_learn_more ID

相关的所有tool_tip_links

你走了

SELECT ptt.tool_tip_link
FROM pages_tool_tip ptt
JOIN pages_to_pages ptp
     ON ptp.tool_tip_id = ptt.tool_tip_id
WHERE ptp.learn_more_id = :id

:id是此处的变量。

答案 1 :(得分:1)

您应该将查询重写为:

"SELECT ptt.tool_tip_link
    FROM pages_learn_more plm
    JOIN pages_to_pages ptp
        ON plm.id = ptp.learn_more_id
    JOIN pages_tool_tip ptt
        ON ptp.tool_tip_id = ptt.tool_tip_id
    WHERE plm.id = 2";

这使得pages_learn_more成为你加入的主表,并找到你想要的东西。