|
|
|
| Запрос с подзапросом
select d.*, (select ae_id from vac where av_id=avd_id_vac) from vac_del d
where avd_end_date<='2007-01-12' order by avd_id_vac
Нужно чтоыб в ответе не было одинаковх записей для поля ae_id
Команда DISTINCT не срабытывает для подзапроса | |
|
|
|
|
|
|
|
для: mel_sasha
(10.01.2007 в 12:52)
| | что значит ? | |
|
|
|
|
|
|
|
для: Trianon
(10.01.2007 в 13:03)
| | Вывести все поля из таблицы d - MySQL-ские штучки... | |
|
|
|
|
|
|
|
для: cheops
(10.01.2007 в 13:37)
| | По отдельности всё понятно
d.* - все поля таблицы по алиасу..
(SELECT) повторрная выборка из результатов запроса.
запятая - декартово произведение.
Но вот всё вместе - такая каша, которая, на мой взгляд, смысла не несет.
Хотя стоп. Запятая тут просто разделитель полей. Бум думать.
нет. Всё равно каша. | |
|
|
|
|
|
|
|
для: Trianon
(10.01.2007 в 13:44)
| | Здесь вложенный запрос выступает как скаляр, т.е. если вложенный запрос возвращает цифру 7, то запрос можно переписать так
select d.*, 7 from vac_del d
where avd_end_date<='2007-01-12' order by avd_id_vac
|
| |
|
|
|
|
|
|
|
для: cheops
(10.01.2007 в 13:52)
| | Он вложенный или коррелированный?
Его исполнение зависит от основного или не зависит? | |
|
|
|
|
|
|
|
для: Trianon
(10.01.2007 в 13:55)
| | Самому интересно :) | |
|
|
|
|
|
|
|
для: mel_sasha
(10.01.2007 в 12:52)
| | ae_id из какой таблицы? avd_id_vac или d? | |
|
|
|
|
|
|
|
для: cheops
(10.01.2007 в 13:39)
| | d.* - вывести все поля таблицы, где d - псевдоним таблицы vac_del
Короче есть две таблицы
vac_del и vac
мне нужно в одном запросе вывести часть данных с первой и второй таблицы
Если так будет понятно, то вот вариант без псевдонимов, к стати это не только MySQL-ские штучки, а обычный синтаксис скл
покрайней мере этот запрос работает и для сибейса
select vac_del.*, (select ae_id from vac where av_id=avd_id_vac) from vac_del
where avd_end_date<='2007-01-12' order by avd_id_vac | |
|
|
|
|
|
|
|
для: mel_sasha
(10.01.2007 в 13:47)
| | Блин, ну почему нельзя написать по-человечески?
SELECT DISTINCT vac_del.*, v.ae_id
FROM vac_del AS d LEFT JOIN vac AS v ON v.av_id=d.avd_id_vac
WHERE d.avd_end_date<='2007-01-12' order by d.avd_id_vac
|
| |
|
|
|
|
|
|
|
для: Trianon
(10.01.2007 в 13:51)
| | Пробовал, команда DISTINCT для запроса, склееного через LEFT JOIN тоже не срабатывает | |
|
|
|
|
|
|
|
для: mel_sasha
(10.01.2007 в 14:08)
| | Она из-за left join не срабатывает или из-за d.* ?
Может руками нужные поля расписать? | |
|
|
|
|
|
|
|
для: mel_sasha
(10.01.2007 в 13:47)
| | Вообще вложенный запрос select ae_id from vac where av_id=avd_id_vac у вас очень странный - av_id и avd_id_vac из таблицы vac или вы хотите коррелированный запрос провести? Скорее всего в таком виде ничего не выйдет - коррелированный запрос нужно в WHERE-условии проводить, на худой конец в FROM. | |
|
|
|
|
|
|
|
для: cheops
(10.01.2007 в 13:55)
| | Все отлично работает в таком виде, только нужно чтобы записи в ответе по полю ae_id не дублтровались.
Я конечно могу потом при обработке результата запроса отбрасывать ненужные записи, но так же не правильно..., да и себе интересно как можно решить такой вопрос...
а с первого взгляда- простой запросик .. | |
|
|
|