2012-01-23 2 views
0

다음 쿼리를 사용하여 때때로 쿼리 조건이 WHERE이 아닌받는 사람 ID에 대한 임의의 알림 항목을 만듭니다. 임의의 삽입을 일으키는 내 쿼리의 부분 인 WHERE에 어떤 문제가 있습니까?MySQL Coalesce 쿼리에서 임의 삽입이 발생합니까?

INSERT INTO 
    notification (text, 
     type, 
     target_id, 
     sender_id, 
     recipient_id, 
     data, 
     timestamp, 
     is_unread) 
    SELECT DISTINCT '$text', 
     'comment', 
     '$id', 
     '$senderId', 
     COALESCE(comment.author_id, stream.author_id), 
     '$dataArray', 
     '$timestamp', 
     '1' 
    FROM 
     stream, 
     comment 
    WHERE 
     (comment.author_id != '$senderId' AND comment.target_id = '$id') 
     OR (stream.author_id != '$senderId' AND stream.id = '$id') 
+1

그리고 귀하의 질문은 무엇입니까? –

+0

무작위 삽입을 일으키는 내 쿼리의 어디 부분이 잘못 되었습니까? –

+0

@BraydonBatungbacal 추측하기 위해'WHERE' 절에서 보간되는 PHP 변수의 예제를보아야합니다. 아마도 문제를 일으키기 위해 설계 한 쿼리가 아니지만 '$ senderId, $ id' 또는 다른 변수가 문제를 일으키는 값입니다. –

답변

2

당신은 더 당신의 streamcomment 테이블 사이에 조인 조건을 없다. 카티 전 곱을 효과적으로 생성하고 있으므로 stream의 행은 comment과 관련이 없거나 그 반대 일 수 있습니다.

JOIN 구문을 사용하고 두 테이블의 행을 상관시키기위한 조건을 선언하는 것이 좋습니다.

관련 문제