2016-04-24 4 views
0

У меня есть table_1 и table_2 и они представляют собой ту же структуру, но разные данные. Необходимо получить все данные из этих таблиц в виде create_date и независимо от того, из какой таблицы (это может быть 1 строка из таблицы_1, 3 строки из таблицы_2, а затем снова из таблицы_1). Является ли это возможным? Как? или крик, я получаю два запроса, а затем сортирую по дате с PHP?Получить данные и отсортировать данные из двух таблиц MySQL

EDIT: Извините за первую часть, я думал, что я могу сделать это оттуда, но кажется, что я не могу:/

У меня есть очень большой запрос, как этот

SELECT 
    table_1.id, 
    table_1.created, 
    table_1.qty, 
    table_1.comments, 
    table_1.last_update, 
    table_7.firstname, 
    SUBSTRING(table_7.lastname, 1, 1) AS lastname, 
    table_8.title country, 
    table_3.value AS sim, 
    table_1.offer_request, 
    table_5.manufacturer AS manufacturer, 
    table_4.name AS model, 
    table_6.value AS specifications, 
    table_9.value as shipping, 
    table_1.model AS mid, 
    table_1.user_id, 
    table_1.callme, 
    table_1.phoneprice, 
    table_1.phoneprice_eur, 
    table_1.currency, 
    table_1.sel_buy_show_all, 
    table_1.seller_buyer 
FROM (`table_1`) 

LEFT JOIN `table_3` ON `table_3`.`id` = `table_1`.`sim` 
LEFT JOIN `table_4` ON `table_4`.`id` = `table_1`.`model` 
LEFT JOIN `table_5` ON `table_5`.`id` = `table_1`.`manufacturer` 
LEFT JOIN `table_6` ON `table_6`.`id` = `table_1`.`specifications` 
LEFT JOIN `table_7` ON `table_7`.`id` = `table_1`.`user_id` 
LEFT JOIN `table_8` ON `table_7`.`country`=`table_8`.`id` 
LEFT JOIN `table_9` ON `table_9`.`id` = `table_1`.`types` 
WHERE `table_1`.`status` = '1' 
AND `table_1`.`deleted` = '0' 
ORDER BY `last_update` DESC 
LIMIT 200 

И там является table_1, в состав которого такая же, как table_2, и мне нужно как-то вставить table_2 на запрос со всеми присоединяется как table_1

ответ

2

Если бы я получил ваш вопрос правильно, вы можете использовать союз, как это -

select * from table_1 union select * from table_2 order by create_date desc 

EDIT

Создайте представление, как это -

create view table_1And2 as select * from table_1 union select * from table_2 

table_1And2 не доброе имя, дать значимое имя.

И изменить ваш длинный запрос, как это -

SELECT 
table_1And2.id, 
table_1And2.created, 
table_1And2.qty, 
table_1And2.comments, 
table_1And2.last_update, 
table_7.firstname, 
SUBSTRING(table_7.lastname, 1, 1) AS lastname, 
table_8.title country, 
table_3.value AS sim, 
table_1And2.offer_request, 
table_5.manufacturer AS manufacturer, 
table_4.name AS model, 
table_6.value AS specifications, 
table_9.value as shipping, 
table_1And2.model AS mid, 
table_1And2.user_id, 
table_1And2.callme, 
table_1And2.phoneprice, 
table_1And2.phoneprice_eur, 
table_1And2.currency, 
table_1And2.sel_buy_show_all, 
table_1And2.seller_buyer 
FROM (`table_1And2`) 

LEFT JOIN `table_3` ON `table_3`.`id` = `table_1And2`.`sim` 
LEFT JOIN `table_4` ON `table_4`.`id` = `table_1And2`.`model` 
LEFT JOIN `table_5` ON `table_5`.`id` = `table_1And2`.`manufacturer` 
LEFT JOIN `table_6` ON `table_6`.`id` = `table_1And2`.`specifications` 
LEFT JOIN `table_7` ON `table_7`.`id` = `table_1And2`.`user_id` 
LEFT JOIN `table_8` ON `table_7`.`country`=`table_8`.`id` 
LEFT JOIN `table_9` ON `table_9`.`id` = `table_1And2`.`types` 
WHERE `table_1And2`.`status` = '1' 
AND `table_1And2`.`deleted` = '0' 
ORDER BY `last_update` DESC 
LIMIT 200 
+0

да, ваш ответ для первой моей части вопроса правильный. Но все же я не мог получить то, что мне нужно, поэтому я улучшил свой вопрос с помощью моего запроса, если бы вы могли мне помочь:? – Scorpioniz

+0

В этом случае вы можете создать представление с указанным выше запросом, а затем вместо использования 'table_1' везде использовать имя представления, которое вы создали в своем длинном запросе. Это будет работать. –

+0

em .. хорошо .. я попробую ... но я никогда раньше не использовал вид :) и я был бы признателен, если бы вы могли установить меня в дороге, как я это делаю – Scorpioniz

1

Также я вижу ответ @Rehban хороший один для вас, я буду производить другое решение, если вам не нужно view:

SELECT 
mainTable.id, 
mainTable.created, 
mainTable.qty, 
mainTable.comments, 
mainTable.last_update, 
table_7.firstname, 
SUBSTRING(table_7.lastname, 1, 1) AS lastname, 
table_8.title country, 
table_3.value AS sim, 
mainTable.offer_request, 
table_5.manufacturer AS manufacturer, 
table_4.name AS model, 
table_6.value AS specifications, 
table_9.value as shipping, 
mainTable.model AS mid, 
mainTable.user_id, 
mainTable.callme, 
mainTable.phoneprice, 
mainTable.phoneprice_eur, 
mainTable.currency, 
mainTable.sel_buy_show_all, 
mainTable.seller_buyer 
FROM (Select * From `table_1` union Select * From `table_2`) as mainTable 

LEFT JOIN `table_3` ON `table_3`.`id` = `mainTable `.`sim` 
LEFT JOIN `table_4` ON `table_4`.`id` = `mainTable `.`model` 
LEFT JOIN `table_5` ON `table_5`.`id` = `mainTable `.`manufacturer` 
LEFT JOIN `table_6` ON `table_6`.`id` = `mainTable `.`specifications` 
LEFT JOIN `table_7` ON `table_7`.`id` = `mainTable `.`user_id` 
LEFT JOIN `table_8` ON `table_7`.`country`=`table_8`.`id` 
LEFT JOIN `table_9` ON `table_9`.`id` = `mainTable `.`types` 
WHERE `mainTable `.`status` = '1' 
AND `mainTable `.`deleted` = '0' 
ORDER BY `last_update` DESC 
LIMIT 200 
+0

Я не знаю почему, но я бы хотел больше использовать без вида (но, возможно, это тоже хорошая идея, я не знаю, что лучше в исполнении) , но если я использую ваш запрос, я получаю ошибку например, '# 1054 - Неизвестный столбец 'table_1.id' в поле 'list' – Scorpioniz

Смежные вопросы