powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка Left join из 3-х таблиц
8 сообщений из 8, страница 1 из 1
Выборка Left join из 3-х таблиц
    #33113577
com100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
помогите составить запрос.

1) Есть таблица Дата (Date)
Date
2005-01-01
2005-01-02
2005-01-03
2005-01-04
2005-01-05
2005-01-06
2005-01-07
......

2) Есть таблица Заказы (zakaz)

__id__|__date___|__zakaz_|Manager|
__1__|2005-01-01|_заказ1_|Petrov
__2__|2005-01-01|_заказ2_|Ivanov
__3__|2005-01-03|_заказ3_|Sidorov
__4__|2005-01-05|_заказ4_|Sidorov
__5__|2005-01-06|_заказ5_|Ivanov
__6__|2005-01-06|_заказ6_|Petrov

3) Есть таблица даты отгрузки вышеописанных заказов

__id__|_id_zakaz_|__otgruzka___|
__1__|___2______|_2005-01-05_
__2__|___4______|_2005-01-10_
__3__|___6______|_2005-01-07_

Стоит задача: вывести таблицу, где будут отображены числа (таблица Date), и заказы, но необходимо показать не только заказы на какой они день, но и напротив дня отгрузки вывести данные об отгружаемом заказе
Т.е.


2005-01-01 - заказ1 - Petrov
2005-01-01 - заказ2 - Ivanov
2005-01-02
2005-01-03 - заказ3 - Sidorov
2005-01-04
2005-01-05 - заказ4 - Sidorov
2005-01-05 - заказ2 - Ivanov (отгрузка)
2005-01-06 - заказ5 - Ivanov
2005-01-06 - заказ6 - Petrov
2005-01-07 - заказ6_|Petrov (отгрузка)
2005-01-08
2005-01-09
2005-01-10 - заказ4_|Sidorov (отгрузка)

Моих знаний хватает, что бы сделать выборку LEFT JOIN из таблицы заказов, но я не могу показать заказы в день отгрузки.
Помогите пожалуйста....
...
Рейтинг: 0 / 0
Выборка Left join из 3-х таблиц
    #33113626
JackS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что мешает сделать второй левт джоин по полю zakaz.id=otgruzka.id_zakaz ?
...
Рейтинг: 0 / 0
Выборка Left join из 3-х таблиц
    #33113673
com100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите мою некомпетентность в этом вопросе, вы имеете ввиду вот такой запрос?

SELECT *
FROM `date`
left join zakaz on (date.date=zakaz.date)
left join otgruzka on (zakaz.id=otgruzka.id_zakaz)

Но он, к сожалению, выводит не то, что мне надо, а кнкретно, он показывает только, что у заказа есть дата отгрузки, а на самой дате отгрузки сам заказ не выводиться.
...
Рейтинг: 0 / 0
Выборка Left join из 3-х таблиц
    #33113740
JackS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я имел в виду что то вроде
SELECT z.* , o.*
FROM `date` d
left join zakaz z on d.date=z.date
left join otgruzka o on z.id=o.id_zakaz
...
Рейтинг: 0 / 0
Выборка Left join из 3-х таблиц
    #33113754
com100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, не подходит, он не выводит нужный список, не показывает отгружаемые заказы
...
Рейтинг: 0 / 0
Выборка Left join из 3-х таблиц
    #33113828
JackS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:) я же тебе идею дал а не полностью готовый запрос, тем более что проверить его я ну никак не могу ... да и не хочу ...
...
Рейтинг: 0 / 0
Выборка Left join из 3-х таблиц
    #33113905
Ekshibarov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если версия mysql >= 4.0.0, то можно попробовать с union:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
(SELECT date.date, z.zakaz,z.manager
FROM  date 
LEFT  JOIN zakaz AS z ON z.date = date.date)
UNION 
(SELECT date.date, oz.zakaz, oz.manager
FROM  date 
LEFT  JOIN otgr AS o ON o.date = date.date
INNER JOIN zakaz AS oz ON oz.id = o.zakaz_id)
oredr by date.date
...
Рейтинг: 0 / 0
Выборка Left join из 3-х таблиц
    #33113977
com100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ekshibarov Vladimir БОЛЬШОЕ СПАСИБО!!!!

С Вашей помощью придумал такой код, который выводит то, что нужно.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create temporary table tmp type=heap (SELECT date.date, zakaz.zakaz,zakaz.manag
FROM  date 
LEFT  JOIN zakaz ON date.date=zakaz.date where zakaz.zakaz is not null)
UNION 
(SELECT date.date, zakaz.zakaz, zakaz.manag
FROM  date 
LEFT JOIN otgruzka ON otgruzka.otgruzka = date.date
inner JOIN zakaz ON zakaz.id = otgruzka.id_zakaz)
order by date;
select date.date,zakaz from 
date
left join tmp on tmp.date=date.date
order by date;

Он очень страшный и громоздкий?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка Left join из 3-х таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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