2017-07-19 11 views
0

"task_type"カラムの値に依存して別のテーブルに参加しようとしていますMySQLは大文字と小文字の異なるテーブルに参加する

構文は何ですか?おかげさまで

SELECT t.*,s.task_name 
    CASE 
    WHEN t.task_type = 0 THEN 
    LEFT JOIN scheduler_tasks s ON s.scheduler_task_id = t.task_id 
    WHEN t.task_type = 1 THEN 
    LEFT JOIN invoice_tasks s ON s.uid = t.task_id 
    END 
    FROM task_timings t 
    WHERE t.account_id = ? AND t.start_date >= DATE(?) AND t.start_date <= DATE(?) 
+0

あなたがエラーを表示することができますか? – Jenish

+0

'FROM'は' LEFT JOIN'より前でなければなりません。 –

+0

@aendeerei前と同じエラーSQL構文に誤りがあります。あなたのMariaDBサーバーのバージョンに対応するマニュアルをチェックしてください。正しい構文を使用するには 'CASE WHEN t.task_type = 0 THEN LEFT JOIN scheduler_tasks s ON s.scheduler_task'行2、ドライバエラーコードは1064 – Dunams

答えて

0

私はあなたがこれをしたいと考えている:

SELECT t.*, 
     COALESCE(s.task_name, i.task_name) as task_name 
FROM task_timings t LEFT JOIN 
    scheduler_tasks s 
    ON s.scheduler_task_id = t.task_id AND 
     t.task_type = 0 LEFT JOIN 
    invoice_tasks i 
    ON i.uid = t.task_id AND t.task_type = 1 
WHERE t.account_id = ? AND t.start_date >= DATE(?) AND 
     t.start_date <= DATE(?); 
+0

ありがとう! 1つの小さな調整がオンになっていたs.uid - オンにする必要があるi.uid – Dunams

0

あなたはこのようにしてみてくださいことができます:

SELECT t.*,s.task_name FROM task_timings t 
CASE 
WHEN t.task_type = 0 THEN 
LEFT JOIN scheduler_tasks s ON s.scheduler_task_id = t.task_id 
WHEN t.task_type = 1 THEN 
LEFT JOIN invoice_tasks s ON s.uid = t.task_id 
END 
    WHERE t.account_id = ? AND t.start_date >= DATE(?) AND t.start_date <= DATE(?) 
+0

と同じです。 SQL構文のエラー。 MariaDBサーバーのバージョンに対応するマニュアルをチェックして正しい構文を確認してください。 'CASE WHEN t.task_type = 0 THEN LEFT JOIN scheduler_tasks s ON s.scheduler_task' 2行目、ドライバエラーコードは1064 – Dunams

関連する問題