К счастью, мне не приходилось работать с особенно сложными SQL-запросами раньше. Вот моя цель.MySQL-запрос с использованием перекрестного соединения, уникальности и т. Д.
У меня есть таблица hams
, которую я хотел бы перекреститься с таблицей eggs
, т. Е. Получить все комбинации хам-яйца ... в какой-то степени.
Таблица eggs
также имеет атрибут how_cooked
, который определен как ENUM('over-easy','scrambled','poached')
. Я хотел бы, чтобы в списке результатов была вся возможная комбинация метода приготовления ветчины и яиц, а также образец яйца, приготовленный таким образом. (я не забочусь, какие яйца в частности.)
Так что если 3 окорока с id
1, 2, и 3, и 3 яйца каждого метода приготовления пищи, мой ResultSet должен выглядеть примерно так:
+---------+-----------------+---------+
| hams.id | eggs.how_cooked | eggs.id |
+---------+-----------------+---------+
| 1 | over-easy | 1 |
| 1 | scrambled | 4 |
| 1 | poached | 7 |
| 2 | over-easy | 1 |
| 2 | scrambled | 4 |
| 2 | poached | 7 |
| 3 | over-easy | 1 |
| 3 | scrambled | 4 |
| 3 | poached | 7 |
+---------+-----------------+---------+
Я уверен, что я мог бы взломать какое-то решение с множеством подзапросов здесь и там, но есть ли какой-нибудь элегантный способ сделать это MySQL?
Он работает, да, но только потому, что вы 'не волнует, какое яйцо в particular'. Поведение SQL для выбора столбцов не в 'GROUP BY' не определено. Однако, по моему опыту, он всегда возвращает действительное значение. Кроме того, это будет работать только до тех пор, пока 'eggs' содержит хотя бы одно вхождение каждого значения в перечисление (конечно, похоже, что это довольно безопасное предположение). – cmptrgeekken
Хорошо - я рад узнать, что на самом деле есть четко определенные ошибки, поскольку, если бы не было каких-либо очевидных, я уверен, что неясные появятся. Благодаря! – Matchu
и mysql - это afaik, единственная база данных, которая позволит вам сделать это таким образом. – ysth