Alt sorgu, sonuç veya boş değer döndürmezse, WHERE yan tümcesinde değeri değiştirmeniz gereken mysql sorgum var. GerekliMySQL alt sorgu geri dönüşü null olup olmadığını kontrol edin, sonra değeri değiştirin
çalıştırır olarak çalışıyor
Fiyat sorgu Başarıyla
SELECT `prices` FROM `pricing`
WHERE (3 BETWEEN `from_unit` AND `to_unit`)
AND `type` = 1
AND `id_pricing` IN
(
SELECT v1.`id_pricing` FROM `values` AS v1
INNER JOIN `values` AS v2 ON v1.`id_pricing` = v2.`id_pricing`
INNER JOIN `values` AS v3 ON v1.`id_pricing` = v3.`id_pricing`
INNER JOIN `values` AS v4 ON v1.`id_pricing` = v4.`id_pricing`
WHERE v1.`id_attribute` = 1 AND v1.`id_value` = 1
AND v2.`id_attribute` = 7 AND v2.`id_value` = 63
AND v3.`id_attribute` = 8 AND v3.`id_value` = 87
AND v4.`id_attribute` = 12 AND v4.`id_value` = 143
)
Ben İÇİNDE yan tümcesi içinde alt sorgu üzerinde IFNULL kontrolün eklenmesi, aşağıda bu sorguyu değiştirmek, bu hatayı
atar 'SQL Hatası (1242): Alt sorgu 1 satırdan fazla'
döndürürSELECT `prices` FROM `pricing`
WHERE (3 BETWEEN `from_unit` AND `to_unit`)
AND `type` = 1
AND `id_pricing` IN
( IFNULL (
( SELECT v1.`id_pricing` FROM `values` AS v1
INNER JOIN `values` AS v2 ON v1.`id_pricing` = v2.`id_pricing`
INNER JOIN `values` AS v3 ON v1.`id_pricing` = v3.`id_pricing`
INNER JOIN `values` AS v4 ON v1.`id_pricing` = v4.`id_pricing`
WHERE v1.`id_attribute` = 1 AND v1.`id_value` = 1
AND v2.`id_attribute` = 7 AND v2.`id_value` = 63
AND v3.`id_attribute` = 8 AND v3.`id_value` = 87
AND v4.`id_attribute` = 12 AND v4.`id_value` = 143
),
'1234'
)
)
IFNULL'u COALESCE ile yine aynı sonucu değiştirmeyi denedim. Yanlış sözdizimi kullanıyorum.
Neden 'IFNULL SEÇ (v1.id_pricing, '1234')' in alt sorgu? –
Çözümle ilgili benzer bir sorun var: http://stackoverflow.com/questions/9861171/how-to-resolve-this-in-mysql-1242-subquery-returns-more-than-1-row – Gimmy
I ' Bu alt sorgu ile karıştı. Ne yapması gerekiyordu? – Strawberry