首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一个带有2个表的SELECT sql查询检索2行PHP

从一个带有2个表的SELECT sql查询检索2行PHP
EN

Stack Overflow用户
提问于 2014-04-21 21:13:59
回答 2查看 102关注 0票数 2
代码语言:javascript
复制
QUOTES TABLE
-----------------
QUOTE_ID_PK  PICKUP_FROM_ID  DROPOFF_TO_ID
1               4                     3
2               2                     3
3               1                     1
4               1                     2
5               3                     2


TOWN TABLE
---------------
 TOWN_ID_PK  DISTANCE    NAME
    1        34          South Central 
    2        43          airport
    3        99          bus station
    4        66          train station

我有两张表来计算一个简单的距离公式。

我需要在orders表中为ORDER_ID返回2行(值为distance)。

我得到了order_id =2,pickupfromdistance=43,dropoffto=99的结果。

我已经尝试了这个网站上的一些想法,这是我的想法,几乎可以工作,但没有返回第二个距离值。我是不是走错路了?我是在为一个简单的问题做一个复杂的解决方案吗?

代码语言:javascript
复制
SELECT town.town_id_pk AS townID, town.distance AS distance, town.name AS townName, town.location AS location, quotes.pickupfrom_id, quotes.dropoffto_id 
FROM town, quotes 
WHERE quotes.pickupfrom_id=town.town_id_pk 
AND quotes.quote_id_pk = '140419420'
UNION ALL
SELECT town.town_id_pk AS townID, town.distance AS distance, town.name AS townName, town.location AS location, quotes.pickupfrom_id, quotes.dropoffto_id
FROM town, quotes 
WHERE quotes.dropoffto_id=town.town_id_pk 
AND quotes.quote_id_pk = '140419420'";

例如,我正在选择:

代码语言:javascript
复制
QUOTE_ID_PK=2, wh

(它有PICKUP_FROM_ID=2和DROPOFF_TO_ID=3)

我想要的结果应该是这样的:

代码语言:javascript
复制
TOWN_ID_PK=2, DISTANCE=43, NAME=AIRPORT

那么下一行将是

代码语言:javascript
复制
TOWN_ID_PK=3, DISTANCE=99, NAME= BUS STATION

一旦我知道哪个距离更远,我就可以继续编写代码来计算每个klm的费率等(我可以自己解决这一部分)。

EN

回答 2

Stack Overflow用户

发布于 2014-04-21 21:30:56

给个提示:

代码语言:javascript
复制
SELECT 
  ORDER_ID, 
  PICKUP_FROM_TOWN_ID, 
  (SELECT DISTANCE FROM TOWN  where TOWN_ID_PK = quotes.DROPOFF_TO_ID) as DISTANCE, 
  quotes.DROPOFF_TO_ID  
from town, quotes 
WHERE quotes.PICKUP_FROM_TOWN_ID=town.TOWN_ID_PK
AND ORDER_ID = '140419420'

这是一个sqlfiddle

编辑:

要获得两行,只需尝试以下命令:

代码语言:javascript
复制
SELECT 
  ORDER_ID, 
  PICKUP_FROM_TOWN_ID, 
  DISTANCE,
  DROPOFF_TO_ID  
from town, quotes 
WHERE 
    ( quotes.PICKUP_FROM_TOWN_ID=town.TOWN_ID_PK or quotes.DROPOFF_TO_ID=town.TOWN_ID_PK )
AND ORDER_ID = 2

新的sqlfiddle

票数 0
EN

Stack Overflow用户

发布于 2014-04-21 21:32:55

你只是想知道这两个城镇的距离吗?如果是这样的话,您可以使用join执行此操作

代码语言:javascript
复制
select oq.*, tfrom.distance as distance_from, tto.distance as to_distance
from OrderQuotes oq left outer join
     Towns tfrom
     on oq.PICKUP_FROM_TOWN_ID = tfrom.town_id_pk left outer join
     Towns tto
     on oq.PICKUP_TO_TOWN_ID = tto.town_id_pk;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23198193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档