Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Есть табличка
id game_id tax_id
1 1 7
2 1 8
3 1 9
4 1 10
5 1 11
6 1 12
7 2 13
и.д.
мне надо
надо сделать выборку game_id, где (tax_id=A, tax_id=b, tax_id=c, tax_id=d) или (tax_id=B, tax_id=b, tax_id=c, tax_id=d) и т.д.
Приведу запрос который сделал и который не дает результата. Он описывает впринципи по логике то что я хочу.
SELECT game_id FROM `KidGamesCon`WHERE
(tax_id=40 AND tax_id=139 AND tax_id=20) OR (tax_id=40 AND tax_id=116 AND tax_id=20) OR (tax_id=40 AND tax_id=299 AND tax_id=20) OR (tax_id=40 AND tax_id=60 AND tax_id=20) OR (tax_id=40 AND tax_id=145 AND tax_id=20) OR (tax_id=40 AND tax_id=87 AND tax_id=20) OR (tax_id=40 AND tax_id=24 AND tax_id=20) OR (tax_id=40 AND tax_id=7 AND tax_id=20) OR (tax_id=40 AND tax_id=13 AND tax_id=20) OR (tax_id=40 AND tax_id=37 AND tax_id=20) OR (tax_id=40 AND tax_id=924 AND tax_id=20) OR (tax_id=40 AND tax_id=31 AND tax_id=20) OR (tax_id=40 AND tax_id=67464 AND tax_id=20)........
Смысл в том что есть игры. есть 6 парматеров у игр. пармаетры разные. Вот хочу по нескольким параметрам сделать поиск. (это для того чтобы не думали, а на..ера ему такой извращенский запрос).
Помогите ГУРУ. ОЧень срочно надо. мое творческое вдохновение заступорилось на данном этапе
Отредактированно bimbim (31.03.2011 09:30:23)
Неактивен
решил поиграться с тем что знаю.. типо tax_id='12' and game_id in (select.... and game_id in(,,,,))...
написал генератор такого многоуровнего сташилища...
вот например получается:
SELECT game_id FROM `KidGamesCon`
WHERE (tax_id=20 and game_id in(SELECT game_id FROM `KidGamesCon` WHERE tax_id=40 and game_id in(SELECT game_id FROM `KidGamesCon` WHERE tax_id=139 OR tax_id=116 OR tax_id=299 OR tax_id=60 OR tax_id=145 OR tax_id=87 OR tax_id=24 OR tax_id=7 OR tax_id=13 OR tax_id=37 OR tax_id=924 OR tax_id=31 OR tax_id=67464))) or (tax_id=11 and game_id in(SELECT game_id FROM `KidGamesCon` WHERE tax_id=40 and game_id in(SELECT game_id FROM `KidGamesCon` WHERE tax_id=139 OR tax_id=116 OR tax_id=299 OR tax_id=60 OR tax_id=145 OR tax_id=87 OR tax_id=24 OR tax_id=7 OR tax_id=13 OR tax_id=37 OR tax_id=924 OR tax_id=31 OR tax_id=67464)))
это пипец.....
самое печальное другое - "Showing rows 0 - 7 (8 total, Query took 3.4012 sec)". 3.4 секи для такой фишки... это будет печально просто при достаточном количестве посетителей.
правдо это на денвере....
НА ХОСТИНГЕ "Отображает строки 0 - 7 (8 всего, запрос занял 1.6402 сек.)"
Короче пипец
ГУРУ, помогите мне с этой задачкой. как можно ее решить?
Отредактированно bimbim (31.03.2011 11:55:59)
Неактивен
на всякий слуйчай.
вопрос всего лишь заключается в том, как сделать запрос типа select * from table where FIELD1=a and FIELD1=b and FIELD1=C ...and FIELD1=N
не создавая дополнительных таблиц
Неактивен
bimbim написал:
на всякий слуйчай.
вопрос всего лишь заключается в том, как сделать запрос типа select * from table where FIELD1=a and FIELD1=b and FIELD1=C ...and FIELD1=N
не создавая дополнительных таблиц
Земенит and на or ?
Что касается вашего первого сообщения:
SELECT game_id FROM `KidGamesCon`WHERE
(tax_id=40 AND tax_id=139 AND tax_id=20) OR ...
В таблице нет строчки в которой tax_id одновременно равно нескольким разным значениям поэтому результат выборки нулевой.
Вам нужно выбрать строки с интересующими вас tax_id сгруппировать по game_id и проверять на соответствие нужному набору tax_id, т.е.
SELECT game_id, group_concat(tax_id order by tax_id separator ',') d FROM `KidGamesCon`WHERE tax_id=40 or tax_id=139 or tax_id=20 OR ... group by 1 having d like ('%20,40,139%') or ...
http://dev.mysql.com/doc/refman/5.5/en/ … oup-concat
Неактивен
на мейл ру подсказал 1 гуру. Остальные так и не поняли что надо!
ВОт оно
SELECT
game_id
FROM
(
SELECT
game_id, tax_id
FROM
`KidGamesCon`
WHERE
tax_id IN (n1,n2...nN)
) AS b
GROUP BY game_id
HAVING count(game_id) >= N
Это нереально крутой запрос
Неактивен
Страниц: 1