Здравствуйте, у меня есть таблица (MySQL), и в моем запросе я хотел бы получить только столбцы, которые больше или равны 4, но я понятия не имею, как это сделать
SELECT * FROM my_table WHERE * (all foo columns foo1-foo7) >= 4 AND date = '2015-09-03'
мой стол выглядит
id | foo1 | foo2 | foo3 | foo4 | foo5 | foo6 | foo 7 | date
-----------------------------------------------------
1 | 5 | 10 | 8 | 0 | 2 | 4 | 5 | 2015-09-03
2 | 7 | 18 | 0 | 1 | 0 | 5 | 7 | 2015-09-04
так что мой результат должен быть
id | foo1 | foo2 | foo3 | foo6 | foo 7 | date
-----------------------------------------------------
1 | 5 | 10 | 8 | 4 | 5 | 2015-09-03
Это возможно? заранее спасибо
Более подходящий ответ (для СУРБД) — использовать две таблицы с отношением и ограничением внешнего ключа.
MASTER
ID DATE
1 2015-09-03
DETAIL
ID MASTER_ID MYNAME MYVALUE
1 1 tom 5
2 1 bill 10
3 1 kev 8
4 1 bob 0
5 1 other 2
6 1 bleh 4
7 1 snarf 5
затем
SELECT m.id, m.date, d.myvalue FROM master m
INNER JOIN detail d ON m.id = d.master_id
WHERE m.date = '2015-09-03' AND d.myvalue > 4
это дает вам несколько строк, но затем вы можете использовать функцию PIVOT вашей СУБД, чтобы превратить это во что-то другое, если хотите.
например
SELECT m.id, m.date, d.myvalue FROM master m
INNER JOIN detail d ON m.id = d.master_id
WHERE m.date = '2015-09-03' AND d.myvalue > 4
PIVOT myvalue FOR myname
(Синтаксис сервера SQL) вы бы в конечном итоге
ID date tom bill kev snarf
1 2015-09-03 5 10 8 5
Попробуй это
SELECT * FROM my_table WHERE id >= 4 AND foo1 >=4 AND foo2 >=4 AND date = '2015-09-03'
Заполните остальные foos, избегайте использования IS и операторов сравнения вместе.