Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Возможно ли сделать такой MySQL запрос? (uuuyyuuu) 15/07/2007 - 22:31:14
      Re: Классный вопросик!!! (bac) 16/07/2007 - 23:00:28

> Original message text:
> From: uuuyyuuu - 15/07/2007 - 22:31:14
> Subject:Возможно ли сделать такой MySQL запрос?
> -----------------
> Есть три таблицы, записей 2 миллиона. Грузовики (пример условен, обозначения чтобы просто понятно было) и водилы.
>
> Каждый водитель умеет ездить только на известных ему типах машин (нескольких), на других предположим он не умеет.
>
> tblCars
> CarID, CarName
> ...
> 21 Audi
> 22 Mercedes
> 23 Moskwitch
> 23 BMW
> ...
>
> tblDrivers
> DriverID, DriverName
> ...
> 11 Ivan
> 12 Petr
> 13 John
> ...
>
> tblCar2Driver - многие ко многим (задаем кто на ком ездит)
> ID, CarID, DriverID
> 1 21 12
> 2 22 11
> 3 23 12
> 4 23 13
> 5 24 11
> 6 24 13
>
>
> Так вот, надо сделать запрос чтобы напротив каждой машины стоял только один водитель, УНИКАЛЬНЫЙ, т.e. чтобы одного и того же водителя в таблице дважды не повторялось, а машины были ВСЕ ДО ЕДИНОЙ. (Другими словами, если не понятно, нам надо выбрать кто поедет на каждой из машин). Т.е. например так:
>
> CarID, DriverID
> 21 12 (кроме него эту машину никто не водит)
> 22 11 (двадцать вторую машину тоже никто кроме этого не водит)
> 23 13 (12 водилу мы выбрать не можем, он уже едет на 21 машине, поэтому тут 13)
> 24 null никого не осталось, все водилы заняты.
>
> Так вот можно ли сделать такое одним запросом? Я не беру пример оптимизации, как раскидывать разных водил куда чтобы всем хватило - это все фигня мне не надо. Мне надо в лоб просто рассовать водил так чтобы на против каждой машины был только один уникальный водила. Потому что это быстро. Как такое сделать? Сколько не писал запросов в своей жизни, а что-то затрудняюсь :)
>


From: bac - 16/07/2007 - 23:00:28
Subject:Классный вопросик!!!
-----------------
Однако если вы чуть чуть посмотрите, то окажется, что ваш вопрос подпадает под решение обычной транспортной задачи. Посмотрите в теории. Я думаю простым запросом задачку не решить.
Приведу пример.
1. Скажем водитель 1 может управлять машинай 1 и 2
2. Водитель 2 машиной 1

Наш вариант решения В1-М2 В2-М1
Т.е в нашем случае для того чтобы принять решение по В1 нужно знать что возможно для В2
Это очень простой пример, а в вашем случае получается ...


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
31876



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |