Гриша К.
Новичок
Извлечени данных из БД, в зависимсоти от значени одного поля, но с особыми условиями.
Извлекаю данные из 2-х таблиц используя left join.
Пример запроса:
Пример результата:
Значение 'status' может иметь значение NULL или 0, 1, 2
Получается, что одному и тому же значению 'cityrus' может соответсвовать либо NULL, либо 0, 1, 2
Мне надо извлеч данные таким образом, что либо status is null либо одно из значений 1 или 2 или 3:
- если status содержит значения 0, 1 и 2, тогда извлекаю только те значения из cityrus, где status = 1; (Если в значениях status есть 1, то извлекаю именно это значение)
- если status содержит значения 0, и 2, тогда извлекаю только те значения из cityrus, где status = 0
- если status содержит значения 2, тогда извлекаю только те значения из cityrus, где status = 1
-~{}~ 24.03.06 00:27:
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
Вот нашел в книге раздел:
Функции управления потоком выполнения:
Там есть к примеру примеры
Вот как мне применить эти функции к запросу:
Чтобы соответсвовать следующему уловию:
# Если 'status' содержит 1 (и уже неважно что еще оно содержит), то выводит значение 'city' только с status=1
# Если 'status' содержит 0 и не содержит 1 (и уже неважно что еще оно содержит), то выводит значение 'city' только с status=0
# Если 'status' содержит 2, то выводит значение 'city' с status=2
# Ну а в остальных случаях status is nulll
Я могу извлеч только значения к примеру с 1 и с null:
where orders.status is null or orders.status = 1
Никак не могу с этим разобраться, помогите пожалуйста.
Извлекаю данные из 2-х таблиц используя left join.
Пример запроса:
PHP:
$query = "SELECT DISTINCT cities.cityid, orders.status
FROM cities LEFT JOIN orders
ON cities.cityid = orders.cityid";
PHP:
|-----------|--------|
| cityrus | status |
|-----------|--------|
| Морозовск | NULL |
| Морони | 0 |
| Моршанск | 1 |
| Мосальск | 2 |
| Москва | 0 |
| Москва | 1 |
| Москва | 2 |
|-----------|--------|
Получается, что одному и тому же значению 'cityrus' может соответсвовать либо NULL, либо 0, 1, 2
Мне надо извлеч данные таким образом, что либо status is null либо одно из значений 1 или 2 или 3:
- если status содержит значения 0, 1 и 2, тогда извлекаю только те значения из cityrus, где status = 1; (Если в значениях status есть 1, то извлекаю именно это значение)
- если status содержит значения 0, и 2, тогда извлекаю только те значения из cityrus, где status = 0
- если status содержит значения 2, тогда извлекаю только те значения из cityrus, где status = 1
PHP:
// Вот я могу только так извлеч, возможно ли та как я описал?:
where orders.status is null or orders.status = 1
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
Вот нашел в книге раздел:
Функции управления потоком выполнения:
Там есть к примеру примеры
PHP:
mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT CASE 1 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END;
-> 'one'
PHP:
$query = "SELECT DISTINCT cities.cityid, orders.status
FROM cities LEFT JOIN orders
ON cities.cityid = orders.cityid";
# Если 'status' содержит 1 (и уже неважно что еще оно содержит), то выводит значение 'city' только с status=1
# Если 'status' содержит 0 и не содержит 1 (и уже неважно что еще оно содержит), то выводит значение 'city' только с status=0
# Если 'status' содержит 2, то выводит значение 'city' с status=2
# Ну а в остальных случаях status is nulll
Я могу извлеч только значения к примеру с 1 и с null:
where orders.status is null or orders.status = 1
Никак не могу с этим разобраться, помогите пожалуйста.