2011-03-14 36 views
1

你好 我有以下查询:内连接返回重复

$k=mysql_query("SELECT cat.name_url, cat.id 
        FROM category cat 
        WHERE cat.name_url='".$_GET["category"]."' "); 
$kRow=mysql_fetch_assoc($k); 


$j=mysql_query("SELECT s_cat.name, s_cat.name_url, s_cat.category_id 
        FROM s_category s_cat 
         INNER JOIN category cat 
          ON s_cat.category_id=".$kRow["id"]." 
        ORDER BY s_cat.name ASC ") or die (mysql_error()); 

我第一次提取一个$ _GET然后在我的第二个查询使用它,但在那里,我得到重复的行,当我取的数组,如果不是的使用INNER JOIN我建立我的第二个查询为:

$j=mysql_query("SELECT s_cat.name, s_cat.name_url, s_cat.category_id 
        FROM s_category s_cat 
        WHERE s_cat.category_id=".$kRow["id"]." 
        ORDER BY s_cat.name ASC ") or die (mysql_error()); 

它会工作,我不会得到相应的抓取行,啥子不对我的INNER JOIN查询的重复?

欢呼

+1

难道不需要使用水平滚动条就可以在屏幕上阅读所有代码吗? – HLGEM

+1

我不知道这是否很难,请教我。 – tetris

回答

0

使用SELECT DISTINCT 那会删除重复的第一个查询

+2

DISTINCT的“修复”问题很少是一个好主意。看看iluxas回答真正的问题。 –

+0

是的,我不想使用不同的 – tetris

+0

iluxa的答案是你需要去的方式,如果你不想使用不同的。 – rsplak

4

语法内连接:

SELECT a.name, b.text 
FROM a INNER JOIN b ON a.id = b.a_id 
WHERE a.name = 'something' 

你错过了“ON a.smth = B .smth“部分

+0

哪里? INNER JOIN确实需要一个WHERE? – tetris

+0

无关。 INNER JOIN是FRO​​M子句的一部分,它可能有也可能没有WHERE。 – iluxa

+0

错过了ON? ON在那里,你是什么意思?在您的查询中输入 – tetris