首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于MySQL联接的帮助

关于MySQL联接的帮助
EN

Database Administration用户
提问于 2014-10-14 18:37:02
回答 1查看 132关注 0票数 1

我正在建立一个监测货币价格的系统。我数据库结构的一部分如下所示:

我的系统试图通过以下查询为每个交换提取api代码:

代码语言:javascript
复制
SELECT distinct E.exchange_id, E.exchange_name, P.pair_id, P.pair_name,T.pair_ticker           
FROM exchange as E
left Join exchange_has_currency_pairs as PE on E.exchange_id = PE.exchange_exchange_id
left Join currency_pairs as P on PE.currency_pairs_pair_id = P.pair_id
left join currency_pairs_ticker as T on P.pair_id = T.currency_ticker_id
order by E.exchange_name desc

查询将返回所有结果,但在所有情况下,pair_ticker都不匹配对名或对应的exchange。应该在currency_pairs到currency_pairs_ticker上再加上n:m,还是我的联接不正确?

谢谢你的意见。

从下面的答案中编辑输出样本

代码语言:javascript
复制
+-------------+---------------+---------+-----------+-----------------------------------------------------------------------+
| exchange_id | exchange_name | pair_id | pair_name | pair_ticker                                                                |
+-------------+---------------+---------+-----------+------------------------------------------------------------------------+
|           4 | bitstamp      |       1 | btc_usd   | https://btc-e.com/api/2/btc_usd/ticker                                 |
|           4 | bitstamp      |       1 | btc_usd   | https://coinbase.com/api/v1/prices/spot_rate?currency=USD              |
|           4 | bitstamp      |       1 | btc_usd   | https://www.bitstamp.net/api/ticker/                                   |
|           4 | bitstamp      |       1 | btc_usd   | http://pubapi.cryptsy.com/api.php?method=singlemarketdata&marketid=2   |
|           1 | btc-e         |       1 | btc_usd   | https://btc-e.com/api/2/btc_usd/ticker                                 |
|           1 | btc-e         |       1 | btc_usd   | https://coinbase.com/api/v1/prices/spot_rate?currency=USD              |
|           1 | btc-e         |       1 | btc_usd   | https://www.bitstamp.net/api/ticker/                                   |
EN

回答 1

Database Administration用户

发布于 2014-10-14 22:52:28

看起来您的currency_pairs_ticker加入了错误的字段。

你现有的加入:

代码语言:javascript
复制
left join currency_pairs_ticker as T on P.pair_id = T.currency_ticker_id

修正连接:

代码语言:javascript
复制
left join currency_pairs_ticker as T on P.pair_id = T.currency_pairs_pair_id

完整的sql

代码语言:javascript
复制
SELECT distinct E.exchange_id, E.exchange_name, P.pair_id,    P.pair_name,T.pair_ticker           
FROM exchange as E
left Join exchange_has_currency_pairs as PE on E.exchange_id = PE.exchange_exchange_id
left Join currency_pairs as P on PE.currency_pairs_pair_id = P.pair_id
left join currency_pairs_ticker as T on P.pair_id = T.currency_pairs_pair_id
order by E.exchange_name desc
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/80182

复制
相关文章

相似问题

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