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
Do I have a syntax error? I do not understand what the problem is, can you help me?
If the subselect return more then a row but you need eg the first you can use limit 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
You have a subquery in the select list of the main query:
...
(SELECT CONCAT(adi,soyadi)
FROM cari
WHERE blkodu = daire.blkrcrkodu
AND firma_code = 40
AND site_code = 84) END AS outran
...
Such subqueries must return 1 row and 1 column (single value). Your subquery returns 1 column, but returns more than 1 row, hence the error.
I cannot provide you an exact solution as to how to modify the query to suit your needs because you have not shared anything about the query itself and you only asked for what the error was anyway. Generally, you can apply
limit 1
clause to limit the number of rows to 1- use any aggregate function such as
min()
to collapse the resultset into a single row - modify your where criteria to return a single record only.
来源:https://stackoverflow.com/questions/39920179/mysql-error-code-1242-subquery-returns-more-than-1-row