[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-programlama
Subject: [Linux-programlama] Re: sql in
From: yazicivo () ttnet ! net ! tr (Volkan YAZICI)
Date: 2006-04-24 11:47:30
Message-ID: 20060424084433.GA259 () alamut
[Download RAW message or body]
On Sat, 22 Apr 2006 "Serdar Ceyhun" wrote:
> Sql'deki IN ile aşağıdaki gibi bir problemim var.
>
> SELECT * FROM enquiry_courses WHERE enquiry_id IN ( SELECT enquiry_id
> FROM enquiries WHERE session_id = '4cd3420a16dbd61c6af58f6199ac00f1'
> )
>
> Myslq says: You have an error in your SQL syntax near 'SELECT
> enquiry_id FROM enquiries WHERE session_id =
> '4cd3420a16dbd61c6af58f6199'
Yine subquery desteklemeyen enterprise-compliant bir veritabanı ile
karşı karşıyayız.
Yukarıdaki sorguyu şu türevleri ile değiştirebilirsiniz. (MySQL bunları
destekler mi bilmem ama.)
SELECT T1.*
FROM enquiry_courses AS T1
WHERE EXISTS (SELECT 1 FROM enquiries AS T2
WHERE T2.session_id = '4cd3420a16dbd61c6af58f6199ac00f1'
AND T2.enquiry_id = T1.enquiry_id);
SELECT T1.*
FROM enquiry_courses AS T1
INNER JOIN enquiries AS T2 ON (T2.session_id = '4cd3420a16dbd61c6af58f6199ac00f1' AND
T2.enquiry_id = T1.enquiry_id);
Muhtemelen 2. sorgu daha hızlı çalışacaktır; fakat bu, verinin dağılımına
ve kullandığınız DBMS'in planner'ının yapacağı seçim ve uygulamaya göre
farklılık gösterebilir - bunu söylerken her iki yöntem içinde doğru
INDEX'leri oluşturduğunuzu varsayıyorum.
İyi çalışmalar.
P.S. Unutmadan, her iki yöntemi de denemeden doğrudan yazdım.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic