2016-04-24 16 views
0

私はtable_1table_2を持っていますが、それらは同じ構造ですが、異なるデータです。そのテーブルのすべてのデータをcreate_dateのソートで取得する必要があります(テーブル1から1行、テーブル2から3行、テーブル1から3行を選択できます)。出来ますか?どうやって?または私は2つのクエリを取得し、PHPで日付順に叫ぶ?MySQLの2つのテーブルからデータとソートを取得

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をテーブルに挿入する必要があります

答えて

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は、意味のある名前を付けて、良い名前ではありません。

そして、このようなあなたの長いクエリを変更 - また、私は@Rehbanの答えはあなたのために良いものであることがわかり

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

あなたが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 - 'field list'の 'table_1.id'が不明です – Scorpioniz

関連する問題