我已经完成了一切,以消除数据库上的这种双重性 在选择sectio" Bairros"上的复选框时我用作数组
for($m=0; $m<count($_POST["bairros"]); $m++){// LOOP 1
$pesquisar=($_POST["bairros"][$m]);
//Copy bairros(Array) and esporte (POST)
$query = "SELECT DISTINCT * FROM cadastro WHERE
(esporte1 = '".$_POST["esportes"]."' OR
esporte2 = '".$_POST["esportes"]."' OR
esporte3 = '".$_POST["esportes"]."' OR
esporte4 = '".$_POST["esportes"]."')
AND
(bairro1 = '".$pesquisar."' OR
bairro2 = '".$pesquisar."' OR
bairro3 = '".$pesquisar."' OR
bairro4 = '".$pesquisar."')
AND
ativarAparecer='sim' ORDER BY nomeCompleto ASC LIMIT 20";
$esporte= new consultar();
$esporte->executa($query);
//Loops
for($l=0; $l<$esporte->nrw; $l++){ //LOOP 2
echo $esporte->data["nomeCompleto"]."<br />";
$esporte->proximo();
} //close LOOP2
} //close LOOP1
答案 0 :(得分:4)
SELECT DISTINCT *
停在那里。 DISTINCT *
可以做什么?什么重复?它不能这样做。给它一个字段名称以查看唯一值。
例如
SELECT DISTINCT nomeCompleto
答案 1 :(得分:0)
让我们打破这个局面。 DISTINCT
子句将根据所选列返回唯一集。
让我们说你有一张桌子:
a | b | c
=========
1 | 2 | 3
1 | 1 | 3
1 | 2 | 4
现在,如果你SELECT DISTINCT a FROM table
,你会得到:
1
但如果你SELECT DISTINCT a, b FROM table
,你会得到:
a | b
=====
1 | 2
1 | 1
这是因为{1,2}
与{1,1}
不同,即使a
列在这两个集合之间相同。
显然,做SELECT DISTINCT * FROM table
会给你原始的表,因为它使用所有三列作为&#34;组合&#34;独特的一套。如果我们将表修改为如下所示:
a | b | c
=========
1 | 2 | 3
1 | 1 | 3
1 | 2 | 4
1 | 2 | 3
然后SELECT DISTINCT * FROM table
的结果会给出:
a | b | c
=========
1 | 2 | 3
1 | 1 | 3
1 | 2 | 4
因为{1, 2, 3}
的重复结果集。但是,由于大多数表都有自动递增标识符作为主键,因此SELECT *
和SELECT DISTINCT *
之间几乎没有区别。
也许您正在寻找某个专栏的GROUP BY
?
答案 2 :(得分:0)
我如何在我的脚本中使用GROUP?有几个相同记录的专栏是这个bairro,bairro2,bairro3,bairro4。里面是数字
bairro1 | bairro2 | bairro3 | bairro4
14 | 14 | 15 | 27
34 | 15 | 14 | 30
27 | 45 | 12 | 14