Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Простая выборка с join / 12 сообщений из 12, страница 1 из 1
16.09.2014, 23:33:40
    #38748539
alex021
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая выборка с join
Добрый вечер. есть маленькая БД. Надо выбрать всех клиентов у которых нет букинга. что-то я совсем туплю(
рводе все должно быть рпосто , но не получается ((
понимаю, что тут ежедневно куча таких тупых вопроссов, но может поможет кто-нибудь.
спасибо заранее

вот мой селект:

Код: plsql
1.
2.
3.
select c.idClient, c.name from Client c
 join Booking b on c.idClient = b.idBooking
where b.idClient is null
...
Рейтинг: 0 / 0
16.09.2014, 23:35:59
    #38748541
alex021
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая выборка с join
БД

Client
idClient(PK)namecountry

Booking
idBooking(PK)idClient(FK)summ date

PS бд немного не соотвтсвтует нормам, но такое задание
...
Рейтинг: 0 / 0
17.09.2014, 01:46:47
    #38748617
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая выборка с join
alex021,

RTFM LEFT/RIGHT JOIN
...
Рейтинг: 0 / 0
17.09.2014, 06:43:03
    #38748663
Простая выборка с join
alex021,

1) not in / not exists подзапросы.
2) [left | right] join {anti}
...
Рейтинг: 0 / 0
17.09.2014, 09:49:24
    #38748771
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая выборка с join
alex021,

вы просто поля перепутали в джоине и в фильтре)))
правильное решение вот так: on c.idClient = b.idClient вместо вашего on c.idClient = b.idBooking

а вообще для вашего случая хватит и вот такого:

Код: sql
1.
select c.idClient, c.name from client с natural join booking b where b.idBooking is null
...
Рейтинг: 0 / 0
17.09.2014, 10:31:24
    #38748830
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая выборка с join
Код: sql
1.
2.
3.
4.
select c.idClient, c.name
from Client c
  left join Booking b on c.idClient = b.idClient
where b.idClient is null
...
Рейтинг: 0 / 0
17.09.2014, 15:24:55
    #38749288
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая выборка с join
miksoft
Код: sql
1.
2.
3.
4.
select c.idClient, c.name
from Client c
  left join Booking b on c.idClient = b.idClient
where b.idClient is null



в вашем запросе тоже баг!!)))

вы что все такие невнимательные???)))
...
Рейтинг: 0 / 0
17.09.2014, 16:06:18
    #38749344
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая выборка с join
Lumixв вашем запросе тоже баг!!)))где? не вижу.
в вашем, кстати, два бага :)
Lumixвы что все такие невнимательные???)))потому что лень приходить в сознание ради таких простых вопросов :)
...
Рейтинг: 0 / 0
17.09.2014, 17:15:30
    #38749466
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая выборка с join
miksoftLumixв вашем запросе тоже баг!!)))где? не вижу.

ещё раз перечитал задачу, беру свои слова обратно, ваше решение правильно
а мое вообще не рабочее

PS. кстати, это отличный повод спросить про exists, которым я никогда в жизни не пользовался
насколько уместным в этой ситуации использование такого запроса

Код: sql
1.
select * from Client c where not exists (select * from Booking b where c.idClient = b.idBooking)



1. Насколько оно уместно с точки зрения решения такого типа задач?
2. Насколько оно эффективнее джоинов?
...
Рейтинг: 0 / 0
18.09.2014, 05:57:00
    #38749919
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая выборка с join
Lumix,

1)а что в нём может быть не уместного?
2)имхо тут разницы нет
...
Рейтинг: 0 / 0
18.09.2014, 13:14:56
    #38750319
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая выборка с join
tanglir1)а что в нём может быть не уместного?


в интернете пишут, что exists не использует индексы, а джоин использует, поэтому вдруг решение на exist в 10-100 раз медленнее... лично я вообще никогда в проектах не пользовался exists
...
Рейтинг: 0 / 0
18.09.2014, 13:24:25
    #38750348
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простая выборка с join
Lumixexists не использует индексыбрешут.
Lumixлично я вообще никогда в проектах не пользовался existsНапрасно. Иногда это очень хороший метод оптимизации.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Простая выборка с join / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]