#sql
#sql
Вопрос:
У меня есть две таблицы, из которых я хотел бы выбрать строки, каждая из которых содержит конкретные предложения where. Я хочу взять эти данные и поместить их в одну таблицу. Я пробовал два метода, но получаю ошибки в каждом из методов. Каково решение? Я не могу использовать левое СОЕДИНЕНИЕ, потому что нет ничего, что могло бы их ОБЪЕДИНИТЬ
ПОПЫТКА ПЕРЕКРЕСТНОГО СОЕДИНЕНИЯ — сбой с двумя предложениями Where
INSERT IGNORE INTO reser (wait_id, name, party_size, phone, email, Time_stamp, status, Table_id, FOH_Table_number, Table_type, Staff_First_Name, Staff_Last_Name )
SELECT a.wait_id, a.name, a.party_size, a.phone, a.email, a.Time_stamp, a.status, b.Table_id, b.FOH_Table_number, b.Table_type, b.Staff_First_Name, b.Staff_Last_Name
FROM list a HAVING wait_id='122'
cross join Tabl b WHERE id='122'
и затем вложенный метод выдает ошибку — неверное количество столбцов
INSERT IGNORE INTO reser
(wait_id, name, party_size, phone, email, Time_stamp, status, Table_id, FOH_Table_number, Table_type, Staff_First_Name, Staff_Last_Name )
VALUES(
(SELECT wait_id, name, party_size, phone, email, Time_stamp, status FROM list WHERE wid='122'),
(SELECT Table_id, FOH_Table_number, Table_type, Staff_First_Name, Staff_Last_Name FROM Tbl Where id = '2')
)
Ответ №1:
В вашем cross join
методе вы должны использовать WHERE
предложение следующим образом:
INSERT IGNORE INTO reser (wait_id, name, party_size, phone, email, Time_stamp, status, Table_id, FOH_Table_number, Table_type, Staff_First_Name, Staff_Last_Name )
SELECT a.wait_id, a.name, a.party_size, a.phone, a.email, a.Time_stamp, a.status,
b.Table_id, b.FOH_Table_number, b.Table_type, b.Staff_First_Name, b.Staff_Last_Name
FROM list a CROSS JOIN
cross join Tabl b
WHERE a.wait_id='122' and b.id='2'