Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите составить сложный запрос, Выборка из нескольких таблиц 
:(
    Опции темы
veterrus
Дата 30.6.2014, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.5.2007

Репутация: нет
Всего: нет



table
-----------
id
status
action
case_number
readiness_date

table1
-----------
id
mid // id- table
executor //INT
kilometrage
departure_date
survey_date

table2
-----------
id
mid // id- table
executor //INT
kilometrage
departure_date
survey_date

accounts
-----------
id
mid // id- table
account_num
account_sum

paid
-----------
id
mid // id- table
aid // id- accounts
executor //INT
exec_sum
exec_date

Нужно выбрать данные из:
table.status, table.action, table.case_number, table.readiness_date, table1.kilometrage, table2.kilometrage, accounts.account_num, accounts.account_sum, paid.exec_sum, paid.exec_date

где 
accounts.mid = table.id, 
table1.mid = table.id, table1.executor = $_POST[idexecutor] AND (table1.departure_date >= $_POST[range_date1] AND table1.departure_date <= $_POST[range_date2]) OR (table1.survey_date >= $_POST[range_date1] AND table1.survey_date <= $_POST[range_date2])
table2.mid = table.id, table2.executor = $_POST[idexecutor] AND (table2.departure_date >= $_POST[range_date1] AND table2.departure_date <= $_POST[range_date2]) OR (table2.survey_date >= $_POST[range_date1] AND table2.survey_date <= $_POST[range_date2])
paid.mid = table.id, paid.aid = accounts.id

Еще и сумму подбить по paid.exec_sum и accounts.account_sum

т.е. нужно выбрать данные где встречается определенный исполнитель (idexecutor) и события (departure_date,survey_date) попадают в в период между датами (range_date1,range_date2)
Несколько дней бьюсь ничего не получается. 
Помогите пожалуйста составить правильно запрос
PM MAIL   Вверх
Akina
Дата 30.6.2014, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



1) Таблицы давайте в теге кода в форме DDL;
2) Условия связывания давайте без PHP-шной шелухи, например, с определёнными заданными значениями уже после подстановки (само собой, никакого дублирования). И тоже в тегах кода;
3) Ещё лучше - дайте дополнительно код INSERT INTO минимального наполнения таблиц, и желаемый итог с именно этими данными и именно этими условиями, да плюс с объяснением, почему именно так.


Цитата(veterrus @  30.6.2014,  16:04 Найти цитируемый пост)
нужно выбрать данные где встречается определенный исполнитель (idexecutor) и события (departure_date,survey_date) попадают в в период между датами (range_date1,range_date2)

Цитата(veterrus @  30.6.2014,  16:04 Найти цитируемый пост)
Еще и сумму подбить по paid.exec_sum и accounts.account_sum

Либо детальные данные, либо суммарные. Но не всё в кучу. Надо и то, и другое - будет два запроса.
ТО есть можно и один - но тогда на клиенте будешь разгребать, где частное, а где сумма.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
veterrus
Дата 30.6.2014, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.5.2007

Репутация: нет
Всего: нет



Суммы нужны вторым запросом, но по тем же условиям - это понятно.
По остальному составлю описание подробней

PM MAIL   Вверх
Akina
Дата 30.6.2014, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Кстати, таблицы table1 и table2 имеют совершенно идентичную структуру и, судя по именам полей и логике связывания, идентчное наполнение... почему их две, а не одна?

Добавлено через 1 минуту и 43 секунды
Цитата(veterrus @  30.6.2014,  16:04 Найти цитируемый пост)
Код

accounts.mid = table.id
, 


Цитата(veterrus @  30.6.2014,  16:04 Найти цитируемый пост)
Код

paid.mid = table.id
, 
Код

paid.aid = accounts.id

А вот тут явно что-то напахано... образуется цикл соответствий.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
veterrus
Дата 30.6.2014, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.5.2007

Репутация: нет
Всего: нет



Я здесь описал их кратко (table1 и table2), в реале они действительно почти индентичны, в них записываются данные людей двух категорий и часть полей отличается или отсутствует.

Есть главная таблица (условно) table, с ней связаны таблицы table1 и table2, а также accounts с связанная с ней paid (aid), в paid  присутствует mid (id главной) т.к. иногда нужно выводить данные в связке (table-paid).
Согласен что напахано, сильно не пинайте, опыта проектирования большой базы и сложных запросов нет.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0658 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.