2017-01-28 3 views
0

すべてのテーブルの同じIDに関連するテーブルの行を取得できるクエリはありますか?4つの異なるテーブルから行を追加する

ユーザーがzipコードを64083として入力し、HTMLフォームで94568と入力すると、Webページに表示される郵便番号に関連する次の日、scnddayおよび3日目の行をフェッチするSQLクエリーが必要になります。データベースのすべてのテーブルから同じ番号を表示する必要があります。

TABLE1

idzipform fromzip tozip 
    1   64083  94568 
    2   94568  64083 

表2

idnextday fedex  usps ups  day 
    1  50.29  90.80 60.60 Nextday 
    2  90.99  80.88 70.70 Nextday 

表3

idscndday fedex  usps ups  day 
    1  20.29 19.80 16.60 Scndday 
    2  19.99 18.88 17.70 Scndday 

表4

idthirdday fedex  usps ups  day 
    1   9.29  9.80 6.60 Thirdday 
    2   9.99  8.88 7.70 Thirdday 

出力は次のようになります

    fromzip  tozip 
        64083   94568 

    day  fedex  usps  ups 

Nextday  50.29  90.80  60.60 
Scndday  20.29  19.80  16.60 
Thirdday  9.29  9.80  6.60 

出力は同じIDを持つすべてのテーブルの第1行である必要があります。

これは可能ですか?私が外部キーまたは主キーを追加しないと助けてください。

+0

UNION文を使用してみては?あなたはPHPで出力をフォーマットしたいのですか(sqlから得られる出力は重要ではありません)?どのrdbmsを使用していますか?これまでに何を試しましたか? – TZHX

+0

@TZHX - 私は "テーブル"は、HTMLテーブルではなく、mysqlテーブルであると仮定します – mplungjan

+0

@mplungjanそれは素晴らしいですか?私は同じことを仮定する。 – TZHX

答えて

0

は、あなたの質問は、PHPとしなければならない何

SELECT f.day, f.fedex, f.usps, f.ups 
FROM table2 f 
INNER JOIN table1 z ON z.idzipform = f.idnextday 
WHERE z.fromzip = '64083' AND z.tozip = '94568' 
UNION 
SELECT s.day, s.fedex, s.usps, s.ups 
FROM table3 s 
INNER JOIN table1 z ON z.idzipform = s.idscndday 
WHERE z.fromzip = '64083' AND z.tozip = '94568' 
UNION 
SELECT t.day, t.fedex, t.usps, t.ups 
FROM table4 t 
INNER JOIN table1 z ON z.idzipform = t.idthirdday 
WHERE z.fromzip = '64083' AND z.tozip = '94568' 

関連する問題