0

このクエリが次のような結果を複製しないようにするにはどうすればよいですか:

私のクエリは次のとおりです。

 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

4 に答える 4

2

DISTINCT2つの行が同じではないため、この場合は機能しません。

値が重複している理由は、クエリが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 ....
于 2013-02-08T15:33:26.960 に答える
1

クエリに結合条件を追加する必要があります。現在、各テーブルのすべての行間でデカルト結合を取得しています。

于 2013-02-08T15:32:14.960 に答える
0

distinct1) 単語の後に単語を追加するselect

また

2)最初に重複が発生しないようにテーブルを結合します

于 2013-02-08T15:30:47.153 に答える
0

ユニークなものでグループ化するか、次のようなものを疑う

SELECT DISTINCT c_comp_name .....

あなたのためにうまくいくかもしれません。aGROUP BY i_id_user も機能しない場合

于 2013-02-08T15:31:18.913 に答える