#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
(если вы не используете явный подзапрос). Таким образом, проблем с подзапросами нет. В вашем первоначальном вопросе не было имен столбцов, но имена — это то, что вы хотите для внутреннего соединения.