MySQL выбирает данные из 5 разных таблиц

  • Автор темы Prizrak_2012
  • 42
  • Обновлено
  • 13, May 2024
  • #1
Мне нужно выбрать данные из 5 разных таблиц. Основная таблица — «Уведомления». Ниже приведены строки из «Таблицы уведомлений», которые я хочу выбрать.

ВЫБЕРИТЕ * ИЗ
 notices
WHERE Notifications.publication_date > '2020-03-01' иnotices.publication_date < '2020-03-31' Теперь мне также приходится выбирать связанную информацию для этих строк из разных таблиц.

Некоторые таблицы имеют прямую связь с Уведомлением о таблице, а некоторые таблицы связаны через другие таблицы. Мой ожидаемый результат следующий.

Где мне придется взять «Название компании», «Код SIC» из «Таблицы компаний»;
 Описание кода SIC
из
 Таблицы Sic_Codes
;
 Prac.Name
,
 Prac.Company
,
 Prac.Phone
из
 Table Insovency_Practionar
 SELECT n.id

, n.gazette_notice_id, n.notice_code, n.company_number, n.publication_date, c.company_name, c.registered_address_town, c.registered_address_postcode, c.sic_1, s.description, s.division, s.section, i.name practionar_name, i.company practitioner_company, i.address prac_address, i.phone

FROM notices n

LEFT

JOIN companies c

ON c.company_number = n.company_number

LEFT

JOIN sic_codes

ON s.code = c.sic_1

LEFT

JOIN notice_insolvency_practitioners ni

ON ni.notice_id = n.id

LEFT

JOIN insolvency_practitioners i

ON i.id = ni.insolvency_practitioner_id

WHERE n.publication_date >'2020-05-01'

AND n.publication_date <'2020-05-31'[/cpde]

Thanks in advance.
Код (разметка): Ниже я описал связь между каждой таблицей с помощью «Уведомлений о таблицах». «Табличные компании» имеют прямое отношение к «Табличным уведомлениям».
  +-------+-------------+------------------+-----------------+--------------+----------+--------------------------+------------+--------------+------------+ | ID | Notice Code | Publication_Date | Company_Number | Company Name | SIC Code | Sic Code Description | Prac.







Name | Prac.company | Prac_Phone | +-------+-------------+------------------+-----------------+--------------+----------+--------------------------+------------+--------------+------------+ | 96008 | 2410 | 2020-03-02 | 09844265 | ATL Logistic | 49410 | Freight Transport | Mr. Conard | Conard Ltd | 01234567 | | 96014 | 2410 | 2020-03-02 | 02640968 | New-Tonne | 28220 | Manufacturer Lifting… | Mr. Andrew | Andrew Ltd | 03243434 | | 96032 | 2410 | 2020-03-02 | 03666759 | Sonataine | 41100 | Development and Building | Mr. Mark | Mark Ltd | 038743287 | +-------+-------------+------------------+-----------------+--------------+----------+--------------------------+------------+--------------+------------+
Код (разметка): «Table Sic_codes» не имеет прямого отношения к «Table Notifications». Но так было и с «Table Companies».
  Table: Notice_insolvency_practitionar_ID . Notice_insolvency_practitionar_ID. Notice_ID = Notices.





ID +-----------+-----------------------------+ | Notice_ID | Insolvency_Practiotionar_ID | +-----------+-----------------------------+ | 96008 | 1048 | | 96014 | 725 | | 96032 | 548 | +-----------+-----------------------------+ [code=text] I have to use the above table to fetch relevant rows from the below table.





[code=text] Table: Insovency_Practionar . Insovency_Practionar.ID = Notice_insolvency_practitionar_ID. Insolvency_Practiotionar_ID +------+------------+------------+------------+-----------+-------------------+ | ID | Name | Company | Address | Phone | Email | +------+------------+------------+------------+-----------+-------------------+ | 1048 | Mr. Conard | Conard Ltd | Birmingham | 01234567 | [email protected] | | 725 | Mr. Andrew | Andrew Ltd | New Road | 03243434 | [email protected] | | 548 | Mr. Mark | Mark Ltd | Hamilton | 038743287 | [email protected] | +------+------------+------------+------------+-----------+-------------------+
Код (разметка):
 Table Insovency_Practionar
не имеет прямого отношения к
 Table Notifications
. Существует еще одна таблица «Table Notification_insolvency_practitionar_ID» для создания связи между этими двумя таблицами «Table Insovency_Practionar и Table Notifications».
  Table: Sic_Codes.





Companies.Sic1 = Sic_code.Code +-----+-------+--------------------------+------------------------+----------------+ | ID | Code | Description | Division | Section | +-----+-------+--------------------------+------------------------+----------------+ | 468 | 49410 | Freight Transport | Land Transport | Transportation | | 262 | 28220 | Manufacture of Lifting… | Machinery and Eqipment | Manufacture | | 334 | 41100 | Development and Building | Construction Building | Construction | +-----+-------+--------------------------+------------------------+----------------+
Код (разметка): Мой ожидаемый результат
 Table: Companies Companies.Company_number = Notices.





Company_ Number +-------+--------------+-----------------+--------------+----------+-------+ | ID | Company_Name | Company_Number | Address | postcode | Sic1 | +-------+--------------+-----------------+--------------+----------+-------+ | 81983 | ATL Logistic | 09844265 | Scot Street | DY4 7AG | 49410 | | 81989 | New-Tonne | 02640968 | Withins Road | WA11 9UD | 28220 | | 82004 | Sonataine | 03666759 | Vastry Road | TN14 5EL | 41100 | +-------+--------------+-----------------+--------------+----------+-------+
Код (разметка): как объединить эти таблицы, чтобы выбрать данные с соответствующей информацией. Я использовал следующий запрос.

Но я не совсем уверен.

Можете ли вы помочь?
 +-------+-------------+------------------+-----------------+--------------+----------+--------------------------+------------+--------------+------------+ | ID | Notice Code | Publication_Date | Company_Number | Company Name | SIC Code | Sic Code Description | Prac.


Name | Prac.company | Prac_Phone | +-------+-------------+------------------+-----------------+--------------+----------+--------------------------+------------+--------------+------------+ | 96008 | 2410 | 2020-03-02 | 09844265 | ATL Logistic | 49410 | Freight Transport | Mr. Conard | Conard Ltd | 01234567 | | 96014 | 2410 | 2020-03-02 | 02640968 | New-Tonne | 28220 | Manufacturer Lifting… | Mr. Andrew | Andrew Ltd | 03243434 | | 96032 | 2410 | 2020-03-02 | 03666759 | Sonataine | 41100 | Development and Building | Mr. Mark | Mark Ltd | 038743287 | +-------+-------------+------------------+-----------------+--------------+----------+--------------------------+------------+--------------+------------+
Код (разметка):

Prizrak_2012


Рег
15 Oct, 2012

Тем
1

Постов
3

Баллов
13
  • 06, Jun 2024
  • #2
Попробуйте этот запрос: Измените часть между знаками на фактическое имя поля, например: c.<имя поля> становится c.company_name Если вы хотите выбрать 2 имени поля, то вот так: c.имякомпании, c.владелецкомпании и т. д.

Запрос:

выбирать

n.id, n.<поля таблицы уведомлений>,

c.<поля таблиц компании>,

s.sic_code,

i.<поля таблицы Insovency_Practionar>

от

уведомленияТаблица как n,

Уведомление_insolvency_practitionar_ID как np,

CompanyTable как c,

sicTable как s,

Insovency_Practionar, как я,

где

n.publication_date > '2020-03-01' и n.publication_date < '2020-03-31'

и

c.Номер_компании = n. Номер компании

и

c.Sic1 = s.Код

и

НП. ID_уведомления = n. ИДЕНТИФИКАТОР

и

i.ID = np.Insolvency_Practiotionar_ID

группировать по n.id

ограничить <что угодно>
 

romann1


Рег
20 Apr, 2011

Тем
1

Постов
9

Баллов
19