MySQL: Как объединить 2 таблицы (a

#mysql #sql

#mysql #sql

Вопрос:

Вопрос требует, чтобы это произошло, пожалуйста, предположите:

 a.ida = b.idb and c.idc = d.idd
and x1.id_i = x2.id_ii
 

a = customer

#он содержит список всех клиентов, которые когда-либо обедали

b = официант

#он содержит список официантов, которые обслуживали клиентов

c = menu

# просто простое меню, содержит индекс для всех продуктов питания

d = порядок

#это похоже на квитанцию, в ней есть такие детали, как то, что было заказано, и ссылка на официанта

Вот как я попытался это сделать

 SELECT x1.param1, x2.param1
FROM customer, waiter, menu, order
LEFT JOIN waiter ON customer.id = waiter.serve_id AS x1
RIGHT JOIN order ON menu.dish_index = order.dish_id AS x2

 

Теперь я хочу иметь внутреннее объединение всех x1 и x2, порядок таблиц содержит waiter_id, который равен waiter.id , так есть ли какой-нибудь способ объединить x1 и x2?
Пожалуйста, помогите

Комментарии:

1. Не могли бы вы, пожалуйста, включить некоторые примеры данных в виде форматированного текста вместе с некоторыми ожидаемыми результатами?

2. Я добавил все соответствующие детали, поскольку я являюсь помощником (обучение), и вопрос находится в Интернете, я не могу добавить все детали, так как студенты просто задают вопрос в Google. Я очень искренне извиняюсь за то же самое.

Ответ №1:

Я бы просто использовал left join s. Но вы, кажется, описываете:

 from (a left join
      b
      on <join conditions for a and b>
     ) join
     (d left join
      c
      on <join conditions on d and c>
     )
     on <join conditions for inner join>
 

Комментарии:

1. после включения <условия соединения для a и b> могу ли я ввести «КАК x1», чтобы присвоить ему псевдоним?

2. @RealSlimShady. . . Нет. Вам придется использовать подзапрос (или CTE), если вы хотите, чтобы результаты a join имели псевдоним.

3. Какими будут <условия соединения для внутреннего соединения> ? Вы сказали, что мы не можем дать им псевдонимы, тогда как мне указать имена столбцов (не a.col1 = c.col1)

4. @RealSlimShady . . . Вы можете присвоить псевдонимы исходным таблицам, а не результату JOIN (если вы не используете явный подзапрос). Таким образом, проблем с подзапросами нет. В вашем первоначальном вопросе не было имен столбцов, но имена — это то, что вы хотите для внутреннего соединения.