2016-10-07 1 views
0

error image hereMySQL의 : 오류 코드 : 1242 하위 쿼리가 1 행 난 구문 오류가 있습니까

SELECT daire.code, daire.durumu, daire.blblkodu, CONCAT(cari.adi , cari.soyadi) AS sahibi, 
CASE daire.blkrcrkodu WHEN '0' 
THEN CONCAT(cari.adi,cari.soyadi) 
ELSE (SELECT CONCAT(adi,soyadi) 
FROM cari 
WHERE blkodu = daire.blkrcrkodu 
    AND firma_code = 40 
    AND site_code = 84) END AS oturan, 
daire.kat, daire.kapi_no, daire.giris_no, daire.alan_m2, daire.__formatted_date 
FROM daire 
INNER JOIN cari ON 
(daire.blshcrkodu = cari.blkodu AND cari.site_code = 84 AND daire.site_code = 84) 
WHERE daire.site_code = 84 
AND daire.firma_code = 40 
ORDER BY daire.blkodu DESC 

이상을 반환? 문제가 뭔지 이해가 안되는데 도와 줄 수 있니? 부속 선택이 행 다음 추가 반환하지만, 당신이 먼저 한계 사용할 수 있습니다 예 필요한 경우

+0

어떤 오류가 발생합니까? – Brandon

+0

'SELECT CONCAT (adi, soyadi)'부질의가 두 개 이상의 레코드를 반환하고있다. 무차별 대입 (brute force)으로이를 고치려면 쿼리 끝에 'LIMIT 1'을 추가하면됩니다. 하지만 논리를 고쳐서 항상 원하는 한 레코드를 반환하도록해야합니다. –

답변

0

1

SELECT daire.code, daire.durumu, daire.blblkodu, CONCAT(cari.adi , cari.soyadi) AS sahibi, 
CASE daire.blkrcrkodu WHEN '0' 
THEN CONCAT(cari.adi,cari.soyadi) 
ELSE (SELECT CONCAT(adi,soyadi) 
     FROM cari 
     WHERE blkodu = daire.blkrcrkodu 
     AND firma_code = 40 
     AND site_code = 84 
     LIMIT 1) END AS oturan, 
daire.kat, daire.kapi_no, daire.giris_no, daire.alan_m2, daire.__formatted_date 
FROM daire 
INNER JOIN cari ON 
(daire.blshcrkodu = cari.blkodu AND cari.site_code = 84 AND daire.site_code = 84) 
WHERE daire.site_code = 84 
AND daire.firma_code = 40 
ORDER BY daire.blkodu DESC 
0

당신은 메인 쿼리의 선택 목록에서 하위 쿼리가 있습니다

... 
(SELECT CONCAT(adi,soyadi) 
FROM cari 
WHERE blkodu = daire.blkrcrkodu 
AND firma_code = 40 
AND site_code = 84) END AS outran 

을 ...

이러한 서브 쿼리는 1 행과 1 열 (단일 값)을 반환해야합니다. 하위 쿼리는 1 열을 반환하지만 1 행 이상을 반환하므로 오류가 발생합니다.

쿼리 자체에 대해 아무 것도 공유하지 않았고 어쨌든 오류가 무엇인지 물었 기 때문에 필요에 맞게 쿼리를 수정하는 방법에 대한 정확한 해결책을 제공 할 수 없습니다. 일반적으로, 당신은 1 개

  • 사용
  • 수정 한 행에 결과 집합을 축소하는 등 min() 어떠한 집계 함수를 행의 수를 제한하는

    • limit 1 조항을 적용 할 수있는 기준이 하나를 반환 기록 만.