从多个表输出mysql数据库行


Outputting mysql database rows from multiple tables

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

我的查询如下:

 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

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

之所以有重复的值,是因为查询从3个表生成笛卡尔乘积。您应该提供一个条件,在该条件下表应该链接到哪里。Ex,

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)在单词select 之后添加单词distinct

2) 加入你的表,这样重复就不会出现在第一位

要么用独特的东西分组,要么我怀疑是之类的东西

SELECT DISTINCT c_comp_name .....

也许对你更有效。如果失败,GROUP BY i_id_user也可以工作