|
|
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
Есть таблица "журнал", которая содержит информацию о том какой корабль в какой порт прибыл, на какой причал и с какой целью. Нужно выбрать те страны, куда никогда не приходят корабли с целью "Торговля". Страна определяется по порту. Вот такой запрос: Код: sql 1. 2. 3. 4. 5. Что нужно добавить, что бы запрос был корректным? То есть страна не должна выводиться, если есть хотя бы одна запись с целью "Торговля". Например, есть две записи, в которых поле страна Россия, в одной записи цель посещения будет "Торговля", а в другой "Ремонт". В таком случае Россия выводиться не должна, что нужно добавить в запрос в такой ситуации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 11:57:22 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
lolfireчто нужно добавить в запрос в такой ситуации?тут не добавлять, тут практически всё переписывать надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 12:00:33 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
tanglir, а в чем ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 12:04:27 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
А с чего вы взяли, что тут есть ошибка? Запрос синтаксически корректен(вроде бы) и даже выдаст какие-никакие, но всё же результаты. Которые в общем-то можно даже описать человеческим языком... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 12:08:06 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
tanglir, я знаю, что запрос корректен, но выводимые результаты не совсем корректны. Должно быть так: если есть хотя бы одна запись, где в поле Цель указано "Торговля", то эта страна не должна выводиться вообще, даже если есть другие записи с такой же страной, но с другой целью(не торговля). Мне в этом помощь и нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 12:15:35 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
lolfireЧто нужно добавить, что бы запрос был корректным?Логику. Ты выводишь страны, куда хотя бы в один порт хотя бы один раз заходил корабль НЕ с целью "Торговля". А вообще тебе сюда: 15796547 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 12:17:36 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
lolfireесли есть хотя бы одна запись, где в поле Цель указано "Торговля", то эта страна не должна выводиться вообщену вот вы практически и написали запрос: выбрать страны из таблицы где (в таблице нет записей с текущей страной и целью "торговля") читайте про exists и коррелированные подзапросы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 12:18:19 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
tanglirlolfireчто нужно добавить в запрос в такой ситуации?тут не добавлять, тут практически всё переписывать надоЗачем все? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 13:35:49 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
OFFTOP А интересно, MySQL выкинет из плана запроса обращение к ship ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 14:14:31 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
Cygapb-007 MySQL выкинет из плана запроса обращение к ship ? Нет. Структура не запрещает наличия записей в journal, не имеющих ни одной соотв. записи в таблице ship. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 14:23:24 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за помощь и советы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 14:53:00 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
AkinaCygapb-007 MySQL выкинет из плана запроса обращение к ship ? Нет. Структура не запрещает наличия записей в journal, не имеющих ни одной соотв. записи в таблице ship.Оптимизатор MS SQL выкинет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 15:31:35 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
Cygapb-007Оптимизатор MS SQL выкинет...И даст неверный результат? не верю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 16:19:31 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
AkinaCygapb-007Оптимизатор MS SQL выкинет...И даст неверный результат? не верю.Отчего тже неверный???? если таблица не используется ни в списке SELECTа, ни в фильтрации/связях - то нафига она вообще нужна в запросе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 21:13:01 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
Cygapb-007 Ладно, я не гордый, разжую... Допустим, в journal есть запись с journal.ship=100. А в ship записи с ship.id=100 нет. В выходной набор запроса с таблицей ship эта запись НЕ попадёт. Если убрать таблицу ship из плана - эта запись в выходной набор попадёт. Следовательно, таблица из плана убрана быть не может, поскольку это изменит выходной набор. ТАК понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 21:24:42 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
Akina , не, ну FK в нормальной структуре никто не отменял... При наличии FK... Где-то я читал, что оптимизатор MS SQL в состоянии удалить из запроса таблицы, не влияющие на результат, отсюда и вопрос по MySQL... А ваше допущение о наличии отсутствующих в справочнике данных... немного похоже на притягивание ушей к ж...елаемому месту, сорь за абстракцию)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 21:32:51 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
Cygapb-007FK в нормальной структуре никто не отменял...Я не вижу ни полслова о наличии ключей, тем более внешних. Равно как и о наличии констрейнтов. А только на основании текста запроса - однозначно можно утверждать, что без дополнительных (неозвученных тут) условий и ограничений таблицу из плана выбрасывать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 21:48:53 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
AkinaCygapb-007FK в нормальной структуре никто не отменял...Я не вижу ни полслова о наличии ключей, тем более внешних. Равно как и о наличии констрейнтов. А только на основании текста запроса - однозначно можно утверждать, что без дополнительных (неозвученных тут) условий и ограничений таблицу из плана выбрасывать нельзя.Да, был неправ. Проверил - даже при наличии FK обращение в таблице есть в плане. И уходит только после LEFT JOIN. Хорошо, уточню: если в запросе LEFT JOIN ship - будет ли в MySQL обращение к ship? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 22:04:50 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
Попробовал на скорую руку - нет, не выбрасывает вроде. Возможно, криво смоделировал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 22:20:48 |
|
||
|
Cтраны, куда не приходят корабли с целью "Торговля"
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2015, 22:29:15 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1833186]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
11ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 354ms |

| 0 / 0 |
