2014-01-27 8 views
0

У меня есть этот запрос, который получает CONTRACT_PERCENTAGE из таблицы isrc_codes. Но если TRACK_ISRC пуст, мне нужно это, чтобы получить CONTRACT_PERCENTAGE из таблицы albums. Есть ли способ сделать это с MySQL. На таблице albumsr.BUNDLE_ID = a.BUNDLE_ID и было бы a.CONTRACT_PERCENTAGE. Вот мой запросMySQL извлекает из другой таблицы, если пустой

$add = mysqli_query($con," 
SELECT sum(r.DISTRIBUTED_AMOUNT/r.EXCHANGE_RATE * i.CONTRACT_PERCENTAGE/100) 
FROM royalties r, isrc_codes i 
WHERE r.TRACK_ISRC = i.ISRC_CODE 
AND r.BUNDLE_ARTIST = '".$row['artistname']."' 
AND r.MONTH_ADDED = '".$current_month."'"); 
+1

Возможно, вы могли бы попытаться построить представление на isrc_codes и таблицах альбомов, чтобы вы могли присоединиться к нему? (не уверен, на самом деле, если это возможно) – Leo

ответ

2

Использование LEFT JOIN получить NULL, если нет соответствующей строки в isrc_codes и IFNULL падать обратно в колонну из albums.

$add = mysqli_query($con, "SELECT SUM(r.distributed_amount/r.exchange_rate * IFNULL(i.contract_percentage, a.contract_percentage)/100) 
        FROM royalties r 
        LEFT JOIN isrc_codes i ON r.track_isrc = i.isrc_code 
        LEFT JOIN albums a ON r.bundle_id = a.bundle_id 
        WHERE r.bundle_artist = '{$row['artistname']}' 
        AND r.month_added = '$current_month'"); 
+0

Я получаю эту ошибку 'mysqli_query() ожидает как минимум 2 параметра, 1 задано' в последней строке –

+0

Не могли бы вы заметить, что я случайно оставил аргумент '$ con' ? – Barmar

+0

пропустил это, я также получаю эту ошибку на fetch 'mysqli_fetch_array() ожидает, что параметр 1 будет mysqli_result, boolean given' –

Смежные вопросы