2015-06-10 47 views
2

AS結合我有一個AS-有關MySQL的問題,特別是在與具有結合:與MySQL的困難有具有

工作(介意 「(250)AS」,第二行):

SELECT A.uid, A.name, A.height, A.width, 
(250) AS squaresize 
FROM tx_fach_domain_model_professional A, 
tx_fach_domain_model_category B, 
tx_fach_professional_category_mm MM 
WHERE MM.uid_local = A.uid and 
MM.uid_foreign = 2 
HAVING squaresize > 20 
ORDER BY squaresize LIMIT 0 , 4; 

這確實工作:

SELECT A.uid, A.name, A.height, A.width, 
(A.height * A.width) AS squaresize 
FROM tx_fach_domain_model_professional A, 
tx_fach_domain_model_category B, 
tx_fach_professional_category_mm MM 
WHERE MM.uid_local = A.uid and 
MM.uid_foreign = 2 
HAVING squaresize > 20 
ORDER BY squaresize LIMIT 0 , 4; 

奇怪的是,它並沒有給我任何錯誤,但它只是返回4個相同的行/記錄,而不是4個不同的行。

是很笨這裏..

以上是我真正的問題的簡化版本..如果我在我上面的例子有(200),實際上,我試圖測量經度之間的距離價值和緯度值:

SELECT A.uid, A.name, A.latitute, A.longitute, 
(6371 * acos (cos (radians(52.52000659999999)) 
* cos(radians(A.latitute)) * cos(radians(A.longitute) - 
radians(13.404953999999975)) + sin (radians(52.52000659999999)) * sin( 
radians(A.latitute)))) AS distance 
FROM tx_fach_domain_model_professional A, 
tx_fach_domain_model_category B, 
tx_fach_professional_category_mm MM WHERE MM.uid_local = A.uid and 
MM.uid_foreign = 2 HAVING distance < 20 ORDER BY distance LIMIT 0 , 4; 

現在這個工作,只要我不使用具有距離< 20 ORDER BY距離。但只要我使用這些,我得到了4個同樣的結果,而不是預期的4 不同結果。

但是,在我的簡單例子中,我有完全相同的問題。

[解決方法]這是沒有的伎倆,並提供後的功能我需要什麼 - 如提出@AsConfused:

SELECT A.uid, A.name, A.latitute, A.longitute, 
(6371 * acos (cos (radians(52.52000659999999)) 
* cos(radians(A.latitute)) * cos(radians(A.longitute) 
radians(13.404953999999975)) + sin (radians(52.52000659999999)) * 
sin(radians(A.latitute)))) AS distance 
FROM tx_fach_domain_model_professional A JOIN 
tx_fach_professional_category_mm MM 
on MM.uid_local = A.uid and MM.uid_foreign = 2 
HAVING distance < 20 
ORDER BY distance LIMIT 0 , 4; 

謝謝!

+0

使用顯式連接,不從表1,表2 ... –

+2

選擇是用於聚合函數條件擁有。與GROUP BY一起使用。 – jarlh

+2

爲什麼不只是在哪裏(A.height * A.width)> 20'? – Daan

回答

1
SELECT A.uid, A.name, A.height, A.width 
FROM tx_fach_domain_model_professional A 
Join tx_fach_professional_category_mm MM 
on MM.uid_local = A.uid and 
MM.uid_foreign = 2 
LIMIT 0 , 4; 

請注意,正方形是硬編碼和無用的頂部大塊,工作就像你說的。 250是由前端知名

+0

好吧看到您的更新問題。你的squareize可以在where子句中。希望這個存根幫助一些 – AsConfused

+0

其實我需要距離,這是我的最終目標。如果我把公式計算的距離到where子句我沒有距離值可用在最後.. –

+0

我知道。就像我說過的,我看到了您的更新問題。保持變量 – AsConfused