2016-07-26 8 views
0

を選択外にある `u.id`を使用することはできません私は、次のMySQLのクエリを持っている:インナーSELECTは

SELECT 
    COUNT(b.`id`) AS todayOverdue, 
    DATE_FORMAT(t.`created_time`, "%Y%m%d") AS days 
FROM 
    `Bill` b 
LEFT JOIN `Order` o ON b.`order_id` = o.`id` 
LEFT JOIN `Trade` t ON o.`trade_id` = t.`id` 
LEFT JOIN `User` u ON b.`user_id` = u.`id` 
WHERE 
b. `deadline` <= "' . $todayTime . '" 
AND b. `deadline` >= "' . $todayDate . '" 
AND b.`is_paid` = 0 
AND (
    SELECT 
     COUNT(b2.`id`) 
    FROM 
     `Bill` b2 
    WHERE 
     b2.`deadline` <= "' . $todayTime . '" 
    AND b2.`user_id` = u.`id` 
    AND b2.`is_paid` = 0 
    OR (
     b2.`deadline` <= b2.`paid_time` 
     AND b2.`is_paid` = 1 
    ) 
) < 2 
GROUP BY 
    days 

なぜSELECT外側にある内側のSELECT使用u.idできないのですか?

+0

例外はありますか? – 1000111

+0

おそらく入れ子になっている可能性があります – FMashiro

+0

外部SELECTにあるu.idは機能しません、u.'id' = '10004'、内部SELECT this sql:b2.'user_id' = u.'id' no use – Chess

答えて

0

インナーセレクトはアウターセレクトから完全に独立しています。 uテーブルは、内側セレクトには未知の方法で外側セレクトに結合されています。

あなたはB2のどの行に比較されているUの行

AND b2.`user_id` = u.`id` 

がありますか?サーバーは知る方法がないので、テーブルu2を定義し、それを内部selectに結合する必要があります。

+0

しかし、私は使用したいと思っています。内側のセレクトでアウターセレクトになっていますが、どうすればいいですか? – Chess

+0

できません。インナーセレクトのUserの結合を作成する必要があります。 – Jaydee