使用外键获取值时出现问题

时间:2011-07-15 08:31:19

标签: php mysql

我有3张桌子。

表1: t_atc_list

id | a_name | s_title | r_name
------------------------------
80 | ss     | 128     | 5

s_title& r_name是外键。

表2: t_s_list

s_id | title
-------------
128  | Song Title

表3: t_r_list

r_id | r_name
--------------
5    | Artist

我使用以下查询以此格式Song Title- Artist使用a_name的专辑名称

获得所需的输出
$resultid=mysql_query("SELECT s_title, r_name FROM t_atc_list where a_name='$album' ");
$rowid=mysql_fetch_array($resultid);
$query=mysql_query("SELECT s.title, r.r_name FROM t_a_list as a, t_r_list as r, WHERE s.s_id=$rowid('s_title') and r.r_id= $rowid('r_name')");
$row=mysql_fetch_array($query);

2 个答案:

答案 0 :(得分:1)

我认为您想要的SQL查询是:

SELECT 
    t.id,
    t.a_name,
    s.title as s_title,
    r.r_name
FROM
    t_atc_list t
        INNER JOIN t_s_list s ON t.s_title = s.s_id
        INNER JOIN t_r_list r ON t.r_name = r.r_id
WHERE
    t.a_name = '$album'

FWIW,你的表命名约定和你的架构一般都很古怪。至少,“曲目”,“歌曲”和“艺术家”,或者他们应该是什么(或纯粹主义者,“曲目”,“歌曲”,“艺术家”)对你的桌面名称有什么不对?< / p>

答案 1 :(得分:0)

$query=mysql_query("SELECT s.title, r.r_name 
FROM t_a_list a, t_r_list r, WHERE s.s_id={$rowid['s_title']} 
and r.r_id={$rowid['r_name']}");

你在字符串中滥用$ rowid。我不知道这是不是问题,但肯定是问题。

PS:您可以将查询重写为一个连接查询。但是在你深入研究SQL之前,我建议你直接学习PHP基础知识并阅读arrays