从4个不同的表中添加行

时间:2017-01-28 08:01:08

标签: php sql

是否有任何查询可以检索所有表中与相同id相关的表行。

如果用户输入fromzip代码为64083,并以html格式输入为94568,我需要一个sql查询来获取与要在网页中显示的那些zipcodes相关的次日,scndday和第三天行,在这种情况下,id为必须在数据库的所有表中显示相同的数字。

表1

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行。

这是可能的,如果没有,请帮助我添加任何外键或主键。

1 个答案:

答案 0 :(得分:0)

尝试使用UNION语句

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'