2011-10-30 7 views
1

: - 日 -PHP MySQL:複数のテーブルを選択し、パフォーマンスサマリーを返す方法PHPで結果を取得する方法

  • NU61 2011
  • KE2I - ボール - 2000
  • B8WO - ポイント - 2008

table_firstSELECT id, order, date FROM table_first ORDER BY orders DESC 返信iddate

id | orders | date 
------+---------+------ 
KE2I | 2  | 2000 
B8WO | 5  | 2008 
NU61 | 1  | 2011 

table_secondSELECT key FROM table_second WHERE id=(id from table_first)table_third

id | key 
------+----------------- 
KE2I | .b 
B8WO | .p 
NU61 | .s 

table_thirdSELECT content FROM table_third WHERE id=(key from table_second)リターンcontent

id | content 
------+----------------- 
.b | ball 
.p | point 
.s | sun 

答えて

2
から contentに到達するために keyを取得

パフォーマンスは限り、あなたは上のインデックスを持っているとして懸念をされません。

`table_first`.`id` 
`table_second`.`id` 
`table_second`.`key` 
`table_third`.`id` 
+0

3つのテーブルからデータを選択する上で、より良いパフォーマンスを得るための任意のより良い解決策? – Binyamin

+0

@ビニャミンあなたの元の質問ではないですか?これは私の答えです=) – Shad

+0

ありがとう!あなたが 'DESC'とPHPを注文したことを忘れたのを除いて、うまくいっているようですが、気にしません。 – Binyamin

1

トリックを行うだろう。このクエリ:

SELECT t1.id, t3.content, t1.`date` 
FROM table_first t1 
    JOIN table_second t2 ON t1.id = t2.id 
    JOIN table_third t3 ON t2.`key` = t3.id; 
+0

あなたのSQLは空の結果を返します: 'MySQLは空の結果セットを返しました(すなわちゼロ行)。 ' – Binyamin

+0

奇妙なことに、テストデータベースで正常に動作します。 – Marcus

関連する問題