复杂的SQL选择

时间:2015-01-30 22:06:08

标签: php mysql sql select join

我有表requests

+------+----------+
| id   | distance |
+------+----------+
|    1 | 1.5km    |
|    2 | 1.3km    |
+------+----------+

和与points

相关的表格requests
+------+------------+--------------------+-------+
| id   | request_id | address            | order |
+------+------------+--------------------+-------+
|    1 |          1 | some_addrs         |     1 |
|    2 |          1 | second_addrs       |     2 |
|    3 |          2 | for_id_2_adddrs    |     2 |
|    4 |          2 | for_id_2_sec_addrs |     2 |
+------+------------+--------------------+-------+

表格点可以包含多个与 ONE 请求相关的行,并包含自己的点位置地址。例如,请求可以具有出发地,目的地及其中间“通过”点(位置) 我的问题是:我希望尽可能简单地 SQL 选择 REQUEST 及其所有位置,这些位置在表points中 请,我不需要这种存储信息的策略,如果有人知道如何做,请帮助我。

我会提供更多信息。有出租车服务。例如,客户被命令从A点到D点到B点并通过C点。我必须保存用户按订单形式放置的所有点。我有订单表,我有包含所有地理位置数据的点表,POINT表中的任何行都可以对应一个订单。我的意思是一个订单可以包含2个或更多点。我的问题是如何获得包含数组或json或任何类型数据的所有点的所有订单

每个请求都可以有无限的点行,但这些行包含request_id。所以,一个请求可以包含例如10个点,我想通过选择所有请求来获取它们。最后我想得到这些数据:json示例:

`{
  ['id': 1, 'distance': 1, 
     [{'address': 'some address'}, 
      {'address: 'second address'}, 
      {'address': 'third address and etc'}],
   'id': 2, 'distance': 4.1,
     [{'address': 'some address'},
      {'address: 'second address'},
      {'address': 'third address and etc'}]
  ]
 }`

1 个答案:

答案 0 :(得分:1)

使用JOIN

关联表格
select r.id as request_id, r.distance
     , p.id as point_id, r.address
from requests as r
     inner join ponts as p on r.id = p.request_id
order by r.id, p.id;

上述查询将为您提供requestspoints的所有数据,按请求ID和点ID排序。

相关问题