2016-10-07 30 views
0

error image hereのMySQL:エラーコード:1242サブクエリは複数行

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)'サブクエリは複数のレコードを返しています。これをブルートフォースで修正するには、クエリの最後に 'LIMIT 1 'を追加します。しかし、あなたは本当にそれが常にあなたが望む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つの

  • 使用に
  • 修正する単一の行にResultSetを折りたたみ、min()として任意の集約関数を行の数を制限する

    • limit 1句を適用することができ、あなたの基準は単一を返しますレコードのみ。
  • 関連する問題