테이블의 두 열이 있습니다. fromid 및 toid이 경우에 동일한 사용자 ID가 포함됩니다.SQL의 다른 열 값과 동일한 열의 값을 선택하지 마십시오.
이 두 열의 모든 ID를 선택하는 드롭 다운 선택 상자가 있습니다.
내 문제는 드롭 다운이 모든 사용자를 선택하지만 한 사용자가 두 열 모두에있을 때 중복된다는 것입니다.
사용자가 두 번 열에 나타나면 한 번만 사용자를 선택하고 열 중 하나에 우선 순위 또는 MAX를 지정하는 것이 좋습니다. 여기 코드는 내가 지금까지 가지고 있습니다 :
$sql="
SELECT
DISTINCT u.".($config->realnames ? "name" : "username")." AS displayname,
u.id
FROM
(#__users AS u
INNER JOIN
#__uddeim AS um
ON
u.id=um.fromid)
WHERE
um.toid=".(int)$myself."
AND
um.totrash=0
AND
`um`.`delayed`=0".$filter."
UNION ALL
SELECT
DISTINCT u.".($config->realnames ? "name" : "username")." AS displayname,
u.id
FROM
(#__users AS u
INNER JOIN
#__uddeim AS um
ON
u.id=um.toid)
WHERE
um.fromid=".(int)$myself."
AND
um.totrashoutbox=0".$filter."
AND um.systemflag=0";
나는 무엇을 시도했다
- 나는 카운트 쿼리하지만 dind't 작업을 사용하여 시도
:
if (count ($row->displayname > 1))
echo "duplicate rows";
코드를 단순화하여 전체 쿼리를 볼 필요가 없습니다. 해결해야 할 문제 만 에뮬레이트 한 관련 코드를 제공하십시오. –
카운트 쿼리를 사용해 보았지만 작동하지 않았지만 다른 솔루션을 찾을 수 없습니다. \t/* if (count ($ row-> displayname> 1)) \t "duplicate rows"; */ –
위의 쿼리에서 불필요한/join/union 선택된 필드를 모두 제거하면 문제를 재현 할 수 있습니다. 누구도 도와주고 싶어하는 너무 많은 백색 잡음. –