2012-11-17 36 views
2

我有這個查詢,我用它來匹配兩個表,現在,我只匹配表的時間,所以,這意味着,零售商表中的時間字段是5秒提前時間在imovo表中的字段。我已經需要實現的是:查詢使用連接和滿足條件

當我插入一個零售商行,我添加信息像零售商時,零售商epos_id 當我插入imovo行,我添加信息像imovo時間,imovo rpos_id 我也有一個表已經匹配rbpos_id和epos_id即

table retailer: 
time  | epos_id 
12:23:34 ea12 

table imovo 
time  | rbpos_id 
12:23:29  ra12 

table rbpos_epos 
id | epos_id | rbpos_id 
1  ea12   ra12 

當我imovo匹配零售商rbpos_epos,我還要檢查是否在rbpos_epos表各自rbpos_id和epos_id比賽..我的意思是,如果他們是一對,如果他們有相同的ID ..

這裏是查詢我目前你SE

SELECT retailer.date, retailer.time, retailer.location, retailer.user_id,imovo.mobile_number ". 
"FROM retailer LEFT JOIN imovo ". 
    " ON addtime(retailer.time, '0:0:50')>imovo.time 
AND retailer.time <imovo.time AND retailer.date=imovo.date 
" 
+0

爲什麼不通過'rbpos_epos'連接表? – eggyal

+0

你能解釋我更好嗎?我的意思是我知道我應該做一些像加入..但我不知道.. –

+0

從零售商JOIN rbpos_epos USING(epos_id)加入imovo USING(rbpos_id)'? – eggyal

回答

0

試着加入所有三個表SQL Fiddle

select r.`time`, r.`epos_id`, 
     i.`time`, i.`rbpos_id` 
from retailer r 
join rbpos_epos re on r.epos_id = re.epos_id 
join imovo i on i.rbpos_id = re.rbpos_id 
      and addtime(r.`time`, '0:0:50') > i.`time` 
      and r.`time` < i.`time` 
      and r.`date` = i.`date`; 

添加列根據需要選擇。

+0

你能用我的查詢嗎? 對不起,但這對我來說很難! –

+0

@al_alb當你加入'epos_id'和'rbpos_id'上的所有三個表時,你不需要再加入'date'和'time'字段。我已經添加了一個SQL小提琴來顯示它。 –

+0

那麼,必須有一個雙重條件,這意味着日期時間和rbpos_id和epos id ..因爲可能有很多行滿足rbpos_id epos_id部分。 –