вставка данных из двух таблиц в одну таблицу, где у каждой есть условие where

#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'