SQL-запрос, как выбрать данные, даже если критерии не совпадают в предложении WHERE - PullRequest
0 голосов
/ 04 марта 2011

Я уверен, что должен быть относительно простой способ сделать это, но он ускользает от меня в данный момент. Предположим, у меня есть таблица SQL, подобная этой:

+-----+------+-----+-----+
|type |value |  Monthly  |
+=====+======+=====+=====+
|  a  |  5   |  Jan      |  << a,Jan      
+-----+------+-----+-----+
|  a  |  3   |  Feb      |  << a,Feb      
+-----+------+-----+-----+
|  a  |  7   |  April    |  << a,April    
+-----+------+-----+-----+

Я группирую свой запрос по типу и по месяцам, скажем, я ищу значение с января по апрель, в этом случае значение марта может иметь какое-либо значение, но я все еще хочу, чтобы оно отображало 0, как это сделать? :

+-----+------+-----+-----+
|type |value |  Monthly  |
+=====+======+=====+=====+
|  a  |  5   |  Jan      |  << a,Jan      
+-----+------+-----+-----+
|  a  |  3   |  Feb      |  << a,Feb      
+-----+------+-----+-----+
|  a  |  0   |  Mar      |  << a,Mar
+-----+------+-----+-----+
|  a  |  7   |  April    |  << a,April    
+-----+------+-----+-----+

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Вам понадобится таблица со списком месяцев (например, month_id, month_name).Затем вы можете сделать что-то вроде этого:

SELECT t.*, m.* FROM months m LEFT JOIN table t ON m.month_id = t.month_id

В противном случае запрос не сможет узнать, что существует такая вещь, как «март».

0 голосов
/ 04 марта 2011

в sql сделайте ваш запрос следующим образом:

SELECT * FROM table WHERE (value='0' OR value='yourcondition') AND..
...