2012-03-15 72 views
0

我想你可以我是一个老屁,但一直是我做了mySQL(不是我自己的专家),我敢肯定有更好的方法来写这个。希望你能帮助我。mySQL - 正确的方法来做到这一点?

SELECT 
    (SELECT MIN(bank_id) FROM bank) AS MinBank, 
    (SELECT MAX(bank_id) FROM bank) AS MaxBank, 
    (SELECT bank_id FROM bank WHERE bank_id = $UserID) AS OldBankID, 
    (SELECT bank_name FROM bank WHERE bank_id = OldBankID) AS OldBankName, 
    (SELECT bank_interest FROM bank WHERE bank_id = OldBankID) AS OldBankInterest, 
    (SELECT bank_fees FROM bank WHERE bank_id = OldBankID) AS OldBankFees, 
    (SELECT bank_pic_url FROM bank WHERE bank_id = OldBankID) AS BankPic 
    (SELECT bank_id FROM bank HAVING bank_id > (SELECT bank_id FROM users WHERE uid = $UserID) LIMIT 1) AS NewBankID, 
    (SELECT bank_name FROM bank WHERE bank_id = NewBankID) AS NewBankName, 
    (SELECT bank_interest FROM bank WHERE bank_id = NewBankID) AS NewBankInterest, 
    (SELECT bank_fees FROM bank WHERE bank_id = NewBankID) AS NewBankFees, 
    (SELECT bank_cost FROM bank WHERE bank_id = NewBankID) AS NewBankCost, 
FROM dwrel_bank LIMIT 1 

基本上它是2个表: (用户)表1 - 检索Bank_ID(客户的旧ID) (银行)表2 - 获取他们的老银行信息和检索他们的下一个 “升级” 的可用性。

它确实给我提供了我想要的信息,但是想知道我是否可以通过某种方式改善这种情况。

谢谢!

+0

它的混乱,在一个地方,你变老从银行表'银行ID在另一个你从'用户表' – 2012-03-15 05:08:09

+0

基本上这:从用户的表中获取Bank_ID。 然后使用此bank_id并从银行表中获取信息。然而,从银行表格中,我想要从同一张银行表中获得2个“重复”信息:他们当前的银行信息和他们的下一个潜在的“升级”。 – sgkdnay 2012-03-15 05:11:43

回答

0

可以更改基于oldBankId第一部分如下

select bank_id OldBankId ,bank_name OldBankName, bank_interest OldBankInterest , 
bank_fees OldBankFees, bank_pic_url as BankPic from bank 
where bank_Id =(select bank_id from bank where bank_id= $user_id) 

你与newBank ID来加入这个并使用相同的语法如上

+0

当你说join时,你的意思是UNION还是LEFT JOIN?不太确定。 – sgkdnay 2012-03-15 05:39:09

+0

在id =(从表中选择ID,其中id> $ userId限制为1)' – 2012-03-15 05:44:32

+0

希望你能够表现出自己的方式,我有点失落尝试它自己哈哈,在此先感谢:) – sgkdnay 2012-03-15 06:46:45