2014-01-30 3 views
0

내가 간단한 쿼리가있는 경우에만 열을 선택는 MySQL의 조건

SELECT 
    gruppo.*, comuni.Nome as nomecomune 
FROM 
    gruppo, comuni 
WHERE 
    (comuni.ID_Comuni = gruppo.ID_Comuni or gruppo.ID_Comuni ='0') 
    AND ID_Gruppo='3' 

당신은 원인 난 항상 행 ID_Gruppo='3'을 보여줄 필요가 어디에서 이해할 수 있지만, gruppo.ID_Comuni='0'는 (그래서 링크가없는 경우 어떻게) 나는 SELECT comuni.Nome 란을 할 필요가 없다.

위의 쿼리가 작동하지만 테이블간에 연결이없는 경우 (gruppo.ID_Comuni=0) 어쨌든 a (임의?) comuni.Nome 값이 표시됩니다.

그래서, 나는 이런 식으로 뭔가를 할 필요가 :

SELECT 
    gruppo.*,` 
    if(gruppo.ID_Comuni <> '0') then also select `comuni.Nome 
FROM 
    gruppo, comuni 
WHERE 
    (comuni.ID_Comuni = gruppo.ID_Comuni OR gruppo.ID_Comuni = '0') AND ID_Gruppo = '3' 

나는 당신의 도움을 주셔서 감사합니다, 나는 분명히 있었다 바랍니다. 당신이 쿼리가 각 행에 테이블 comuni에서 각 행을 조인 어떤 종류의 크로스 조인을 수행 -

+0

[나쁜 습관 : 오래된 스타일의 조인 사용] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style- joins.aspx) - 구식 * 쉼표로 구분 된 테이블 * 스타일 목록이 ANSI - ** 92 ** SQL 표준 (** 20 년 ** 전)으로 단종되었습니다. –

답변

0

SELECT column ONLY IF... FROM ..

당신은 또한 무작위 결과를 얻고 있지 않습니다되는 쓰기, 수 없습니다 표 gruppo에서 gruppo.ID_Comuni = 0입니다.

"경우에만 선택"명령이 필요한 경우 저장 프로 시저 또는 SQL 스크립트를 작성해야합니다.