IM有一個大的複雜的查詢我寫的困難時期:SQL - 非常複雜的查詢
SELECT e.id, e.name,e.age, e.area, e.date,e.private, e.place, p.*, COUNT(user) AS attending
FROM events AS e
LEFT OUTER JOIN
(SELECT user, event
FROM attendance
) AS a
ON a.event = e.id
LEFT OUTER JOIN
(SELECT name AS place_name, id as idd, nz AS place_loc, coor
FROM places
) AS p
ON p.idd = e.place
where (e.age LIKE "%{17-18}" OR e.age LIKE "%{18-19}" OR e.area LIKE "%{1}" OR e.area LIKE "%{2}" OR e.area LIKE "%{4}" OR e.area LIKE "%{6}" OR e.area LIKE "%{32}" OR e.area LIKE "%{37}" OR e.private LIKE '%id%')
GROUP BY e.id, e.name
ORDER BY attending DESC
limit 0,7
該查詢給我的事件,它通過考勤表對其進行排序,並且還讓我牽掛的地方的信息事件正在進行。
無論如何,問題出在WHERE區域......每個用戶都有不同的年齡和地區。例如: 年齡段:{17-18},{20-22}地區:{0},{1},{2}
每個事件都有相同的東西 - 年齡和地區...我試圖找到一個匹配項:
如果設置了事件:年齡 - {15-16},{17-18}並且用戶至少設置了其中一個,它將匹配。
我不介意改變我存儲年齡和地區的方式..我確定我沒有很好地使用{},所有我想要的是設置用戶偏好的方式,他可以保存區號和年齡範圍,然後我想從事件中選擇與用戶年齡和地區相匹配的事件。
非常感謝你!非常友好的
哇,問題不是*只是*地區。你不需要這麼多的子查詢,你可以使用外連接中的表... – Konerak 2012-02-27 16:06:40
而且,很抱歉地說,這不是一個複雜的查詢。一個複雜的查詢至少延長5倍。當保存到文本文件中時,一個*真正*複雜的查詢是10KB。 :) – 2012-02-27 16:07:51
是否有地方和區域相關?還是「區域」是指「感興趣區域」(如電腦,舞蹈,武術等)? – 2012-02-27 16:10:51