需要找到表joinig 2表的一个元素

时间:2019-04-25 09:23:16

标签: mysql sql

我要基于选择(?)的结果联接两个表 我想获取表A中具有特定distanceunique_id的用户的pos_id值,并将它们与表B order_id

结合在一起

我有这2张桌子:

表A具有字段uniq_idpos_id

+-----------------+-------------+------+-----+---------+-------+
| Field           | Type        | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| unique_id       | varchar(30) | YES  |     | NULL    |       |
| time_stamp      | datetime    | YES  |     | NULL    |       |
| start_id        | int(20)     | YES  |     | NULL    |       |
| end_id          | int(20)     | YES  |     | NULL    |       |
| pos_id          | int(20)     | YES  |     | NULL    |       |
+-----------------+-------------+------+-----+---------+-------+

TableB具有order_iddistance

+---------------+---------+------+-----+---------+----------------+
| Field         | Type    | Null | Key | Default | Extra          |
+---------------+---------+------+-----+---------+----------------+
| order_id      | int(11) | NO   | PRI | NULL    | auto_increment |
| latitude      | double  | YES  |     | NULL    |                |
| longitude     | double  | YES  |     | NULL    |                |
| distance      | double  | YES  |     | NULL    |                |
+---------------+---------+------+-----+---------+----------------+

我用过滤器形式A uniq_id得到了pos_id(例如'user1'),并将其与B的order_id结合起来以得到相应的disntace值< / p>

我为此感到厌倦,但并没有真正让我到达那里。

select distance from B
    join A
    on A.unique_id='user1'

我想从表B中获取distance值,但我现在要获取的只是全部距离值乘以3作为输出。

编辑一些示例数据: 表A

+-----------+---------------------+----------+--------+----------------+
| unique_id | time_stamp          | start_id | end_id | pos_id         |
+-----------+---------------------+----------+--------+----------------+
| user1     | 2019-04-24 14:40:15 |     NULL |   NULL |              1 |
| user1     | 2019-04-24 14:40:15 |     NULL |   NULL |              2 |
| user1     | 2019-04-24 14:40:15 |     NULL |   NULL |              3 |
+-----------+---------------------+----------+--------+----------------+

表B

+-----------+---------------------+-----------------+---------------+
| order_id  |     latitude        | longitude       | disntace      |
+-----------+---------------------+-----------------+---------------+
|     1     |    2.02347          | 11.438619613647 |     1.2764224 |
|     2     |    13.20476         |  -57.17261      |     29.082539 |
|     3     |   -31.60947         |  51.72054       |     13.158945 |
|     4     |   -56.01120         |  -154.53439     |      33.69381 |
|     5     |    29.68856         |  -130.61082     |     25.275803 |
|     6     |    48.03862         |  164.51725      |      14.42865 |
+-----------+---------------------+-----------------+---------------+

3 个答案:

答案 0 :(得分:0)

为此,您需要一个外键..... 我认为 pos_id order_id 中的tableB参考价列的外键。 那么您的查询就像

select B.distance from A
inner join B on (A.pos_id= B. order_id)
where A.unique_id='user1'

答案 1 :(得分:0)

已解决:

select distance from B
    join A
    ON a.pos_id = b.order_id AND A.unique_id='user1'

答案 2 :(得分:-1)

我几个月前才开始学习sql,但是在示例“ JOIN”表中按1字段包含2字段仍然看不到。也许你需要像这样写东西 SELECT distance From A,B Where a.unique_id = 'user1';

尝试一下,但不要轻易判断我:)