|
|
|
Объясните новичку логику запроса
|
|||
|---|---|---|---|
|
#18+
Всем добрый день. Изучаю sql на одном из сайтов. Даётся следующий пример с запросом: =============== SQL Execution Log ============== | | | SELECT * | | FROM Orders | | WHERE NOT ((odate = 10/03/1990 AND snum > 1002) | | OR amt > 2000.00); | | =============================================== | | onum amt odate cnum snum | | ------ -------- ---------- ----- ----- | | 3003 767.19 10/03/1990 2001 1001 | | 3009 1713.23 10/04/1990 2002 1003 | | 3007 75.75 10/04/1990 2004 1002 | | 3010 1309.95 10/06/1990 2004 1002 | ================================================= Я правильно понял, что данный запрос должен исключить из выборки все строки, содержащие в себе odate = 10/03/1990 AND snum > 1002 или amt >2000? Т.е., если один из этих параметров верный, то строка в выборке не отображается? Но если это так, то почему в выборке отобразилась строка "onum amt odate cnum snum | | ------ -------- ---------- ----- ----- | | 3003 767.19 10/03/1990 2001 1001 | , содержащая в себе odate = 10/03/1990 AND snum > 1002? Заранее благодарю за комментарии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 11:40 |
|
||
|
Объясните новичку логику запроса
|
|||
|---|---|---|---|
|
#18+
AlexyasВсем добрый день. Изучаю sql на одном из сайтов. Даётся следующий пример с запросом: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Я правильно понял, что данный запрос должен исключить из выборки все строки, содержащие в себе odate = 10/03/1990 AND snum > 1002 или amt >2000? Т.е., если один из этих параметров верный, то строка в выборке не отображается? Но если это так, то почему в выборке отобразилась строка "onum amt odate cnum snum | | ------ -------- ---------- ----- ----- | | 3003 767.19 10/03/1990 2001 1001 | , содержащая в себе odate = 10/03/1990 AND snum > 1002? Заранее благодарю за комментариине забывайте, пожалуйста, использовать ТЭГи. Берегите зрение и нервы форумчан :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 11:48 |
|
||
|
Объясните новичку логику запроса
|
|||
|---|---|---|---|
|
#18+
Alexyas, по теме вопроса - вспомните закон Де-Моргана , раскройте скобки, избавьтесь от отрицания - сразу станет ясно, на каких условиях выбираются данные... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 11:51 |
|
||
|
Объясните новичку логику запроса
|
|||
|---|---|---|---|
|
#18+
Alexyasпочему в выборке отобразилась строка Потому что кто-то сравнивает значение поля `odate` и значение выражения 10/03/1990=0.00167504. Литералы даты следует обрамлять кавычками или использовать явное приведение типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 11:56 |
|
||
|
Объясните новичку логику запроса
|
|||
|---|---|---|---|
|
#18+
AkinaAlexyasпочему в выборке отобразилась строка Потому что кто-то сравнивает значение поля `odate` и значение выражения 10/03/1990=0.00167504. Литералы даты следует обрамлять кавычками или использовать явное приведение типа.да, и про корректное указание строковых литералов - забывать не стОит, конечно же... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 12:01 |
|
||
|
Объясните новичку логику запроса
|
|||
|---|---|---|---|
|
#18+
AlexyasНо если это так, то почему в выборке отобразилась строка "onum amt odate cnum snum | | ------ -------- ---------- ----- ----- | | 3003 767.19 10/03/1990 2001 1001 | , содержащая в себе odate = 10/03/1990 AND snum > 1002? тут выполняется Код: sql 1. показана строка с snum < 1002 но это всё имело бы смысл, если бы были кавычки у '10/03/1990' откройте для себя тип данных DATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 13:26 |
|
||
|
Объясните новичку логику запроса
|
|||
|---|---|---|---|
|
#18+
полудух, Спасибо. Т.е. я правильно понял, что данный запрос можно перевести так: "Исключить из вывода запроса строки, которые содержат odate = 10/03/1990 AND snum > 1002 или которые содержать значение snum >1002? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2018, 17:40 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39683069&tid=1829693]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 354ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...