2016-04-25 74 views
-1

我有一個MySQL查詢,我在查詢中使用內部連接。由於一些未知的原因,它不能按我的預期工作。我不確定查詢有什麼問題。任何人都可以告訴我我做錯了什麼。MySQL內部連接查詢:不正確的輸出

這是查詢。

SELECT f.uid, a.uid, b.uid, c.uid, 
     d.uid, e.uid, 
     f.date, a.email, a.fname, a.lname, 
     a.mobile, a.pic, a.address 
FROM users a 
inner join friends b 
inner join exp c 
inner join skill d 
inner join personaldetails e 
inner join jobs f 
    on a.uid = b.uid =c.uid = d.uid=e.uid=f.uid 
where f.job_id= 22 
    and f.ignored=0 
    and a.fname like '%Rah%' 
order by f.date DESC 

如果我運行此查詢話,我想我會得到a.uid =1, b.uid =1, c.uid =1, d.uid=1, f.uid =1

但我正在逐漸a.uid =1, b.uid=10, c.uid=10, d.uid=1,e.uid=1,f.uid =1

+0

感謝向下表決。我會喜歡解釋。所以,我會糾正這一點。 – Ironic

回答

1

這似乎是一個奇怪的問題,我剛纔嘗試了下面的東西。

select 1=10=10=1=1=1 from dual; 

結果爲,

select 10=10=1=1=1=1 from dual; 

結果爲,也許這on a.uid = b.uid =c.uid = d.uid=e.uid=f.uid查詢條件採取第二個作爲其計算結果。我不確定mysql是否會在執行某種優化步驟​​時導致此問題。

我想如果a.uid當MySQL計算a.uid = b.uid和b.uid都爲1,它出來的值1意味着true,所以只有當c.uid是1,那麼計算將繼續對d.uid, e.uid,f.uid。

不管怎樣,試試這個,可能會幫助你;)

select f.uid, a.uid, b.uid, c.uid, 
    d.uid, e.uid, 
    f.date, a.email, a.fname, a.lname, 
    a.mobile, a.pic, a.address 
from users a, friends b ,exp c, skill d, personaldetails e, jobs f 
where f.job_id= 22 
and f.ignored=0 
and a.fname like '%Rah%' 
and a.uid = b.uid 
and b.uid = c.uid 
and c.uid = e.uid 
and e.uid = f.uid 
order by f.date desc 

如果您發現了一些其他的解釋,分享給我PLZ)

+0

你是對的。我也發現。 a = b = c在這種情況下不起作用。投票並接受答案。 – Ironic

1

你試過分裂它呢?

select f.uid,a.uid,b.uid,c.uid,d.uid,e.uid,f.date,a.email,a.fname,a.lname,a.mobile,a.pic,a.address 
from users a 
    inner join friends b on (a.uid = b.uid) 
    inner join exp c on (b.uid = c.uid) 
    inner join skill d on (c.uid = d.uid) 
    inner join personaldetails e on (d.uid = e.uid) 
    inner join jobs f on (e.uid = f.uid) 
where f.job_id= 22 and f.ignored=0 and a.fname like '%Rah%' order by f.date DESC 
+1

讓我試試。投了票。 – Ironic

+0

這沒有奏效。我得到多行。 – Ironic

1

請檢查其中一個表是否有重複。我相信這是事實。如果以下查詢返回記錄,那麼您將有罪魁禍首。

SELECT f.uid, a.uid, b.uid, c.uid, 
     d.uid, e.uid, 
     f.date, a.email, a.fname, a.lname, 
     a.mobile, a.pic, a.address 
FROM users a 
inner join friends b 
inner join exp c 
inner join skill d 
inner join personaldetails e 
inner join jobs f 
    on a.uid = b.uid =c.uid = d.uid=e.uid=f.uid 
where f.job_id= 22 
    and f.ignored=0 
    and a.fname like '%Rah%' 
group by f.uid, a.uid, b.uid, c.uid, 
     d.uid, e.uid 
having count(*) > 1 
order by f.date DESC; 
+0

我運行查詢沒有記錄返回。 – Ironic

+0

我會嘗試通過一次評論一個子句來調試。 @CalculatingMachine - 試試。 – MontyPython