从多个表输出mysql数据库行

时间:2013-02-08 15:28:26

标签: php mysql sql

如何防止此查询不重复此结果:

我的查询如下:

 SELECT A.c_comp_name, A.i_id_user, B.c_name, C.c_map_name, D.c_temp_name
 FROM dc_cnf_costumer AS A, dc_cnf_page AS B, dc_cnf_map AS C, dc_cnf_renderer AS D

输出:

c_comp_name      i_id_user     c_name     c_map_name       c_temp_name
comp_1           4             Home       /map1/           template.php
comp_2           4             Home       /map1/           template_two.php
comp_1           4             Home       /map1/           template.php
comp_2           4             Home       /map1/           template_two.php
comp_1           4             Home       /map1/           template.php
comp_2           4             Home       /map1/           template_two.php
comp_1           4             Home       /map1/           template.php
comp_2           4             Home       /map1/           template_two.php

4 个答案:

答案 0 :(得分:2)

DISTINCT在这种情况下不起作用,因为没有两行是相同的。

您有重复值的原因是查询从3个表生成笛卡尔积。您应该已经提供了表格应该链接的条件。前,

SELECT A.c_comp_name, A.i_id_user, B.c_name, C.c_map_name, D.c_temp_name
FROM dc_cnf_costumer AS A 
     INNER JOIN  dc_cnf_page AS B
         ON ....
     INNER JOIN dc_cnf_map AS C 
         ON ....
     INNER JOIN dc_cnf_renderer AS D
         ON ....

答案 1 :(得分:1)

您需要为查询添加连接条件 - 目前您在每个表的所有行之间获得了一个笛卡尔连接。

答案 2 :(得分:0)

1)在单词distinct

后添加单词select

2)加入你的牌桌,以便副本不会出现在第一位

答案 3 :(得分:0)

通过独特的东西组合或我怀疑像

SELECT DISTINCT c_comp_name .....

可能会更好地为您服务。 没有GROUP BY i_id_user也可以工作