2011-07-02 13 views
0

iは、出力は26.8になります。このクエリ疑問は - mysqlの

SELECT round(avg(DATEDIFF(CURRENT_DATE, age) /365) , 1) 
FROM single_user U 
INNER JOIN university_has_single_user T 
ON T.single_user_users_id_user = U.users_id_user 
where (
SELECT id_university 
FROM university 
WHERE university = "ISEL" 
) 
LIMIT 0 , 30 

をしようとしていますが、私は大学の名前を変更した場合、または単に結果は再び26.8でwhere句を削除するために、いくつかの問題があります。

日付は以下のとおりです。

1979-06-23 
1988-04-23 
1988-04-23. 

任意のヘルプ?何が問題ですか?

答えて

1
where (
SELECT id_university 
FROM university 
WHERE university = "ISEL" 
) 

where 
    exists (
    SELECT id_university 
    FROM university x 
    WHERE x.university = "ISEL" AND 
    x.universityid = t.universityid 
) 

する必要がありますまあ、私は推測します。あなたのテーブル構造がどういうものなのか、あなたが達成しようとしていることははっきりと分かりませんが、私は大学の名前をクエリに渡したいと思っています。

私が間違っている場合は、テーブルの構造と実際の目標を掲示してください。

1

WHERE句はフィルタリングされていません。 WHERE 1=1

これらの2つのテーブルの1つに、テーブル大学へのFKバックグラウンドがありますか?

私はあなたがこの探している疑いがある:

SELECT round(avg(DATEDIFF(CURRENT_DATE, age) /365) , 1) 
FROM single_user U 
INNER JOIN university_has_single_user T 
ON T.single_user_users_id_user = U.users_id_user 

INNER JOIN university AS UNI ON UNI.id = 
    U.university_id -- or wherever your university ID FK is. 
where UNI. university = "ISEL" 
LIMIT 0 , 30 

答えはあなたのテーブルのスキーマによって異なります。

+0

もありがとう –