Имея этот выбор:
SELECT * (SELECT id, value, discount, 2 AS attr_number FROM database1 db1
JOIN database2 db2 ON db2.db1_id = db1.id
WHERE value = 1
UNION
SELECT id, value, discount, 1 AS attr_number FROM database1 db1
JOIN database4 db4 ON db4.db1_id = db1.id
AND db4.value = 1
WHERE value = 1) WHERE id = 225
Это то, что я получаю при выполнении выбора:
|ID |VALUE |DISCOUNT |ATTR_NUMBER |
|-------------|---------------------------------------|---------------------------------------|---------------------------------------|
|225 |1 |50 |2 |
|225 |1 |50 |2 |
|225 |1 |40 |1 |
|225 |1 |40 |1 |
|225 |1 |40 |1 |
Мне нужно добавить проверку для столбца attr_number
. Если у select есть записи, где attr_number = 1
, то выходные данные должны быть такими (он должен возвращать только записи, где attr_number = 1
):
|ID |VALUE |DISCOUNT |ATTR_NUMBER |
|-------------|---------------------------------------|---------------------------------------|---------------------------------------|
|225 |1 |40 |1 |
|225 |1 |40 |1 |
|225 |1 |40 |1 |
Если у select нет записей, где attr_number = 1
, тогда он должен вернуть записи, где attr_number = 2
. Например:
|ID |VALUE |DISCOUNT |ATTR_NUMBER |
|-------------|---------------------------------------|---------------------------------------|---------------------------------------|
|225 |1 |50 |2 |
|225 |1 |50 |2 |
Значения attr_number
могут быть только 1 или 2.