SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 12.09.2012 17:28:10

Syegorius
Завсегдатай
Зарегистрирован: 29.10.2010
Сообщений: 28

как правильно написать запрос

доброе время суток

мой вопрос может вам показаться банальным, но долго искал в нете, но так и не нашел нужный ответ.
есть таблица tags:

   tag      item_id
..........................
  flash         3
  drive         3
  flash         13
  drive         13
  flash         8
  drive         9
   cpu         10
  flash         1
  drive         1
   usb          1

нужно найти все item_id, у которых tag=flash или tag=drive, но так что б item_id не повторялось, т.е. что нужно добавить в этот запрос

select * from tags where tag='flash' or tag='drive' limit x, y

заранее спасибо за помощь!

Неактивен

 

#2 12.09.2012 17:37:10

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: как правильно написать запрос

SELECT distinct `item_id` FROM `tags` WHERE `tag` IN ('flash', 'drive');

Оно?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 13.09.2012 01:16:14

Syegorius
Завсегдатай
Зарегистрирован: 29.10.2010
Сообщений: 28

Re: как правильно написать запрос

кажеться да. спасибо!

Неактивен

 

#4 24.12.2012 18:57:58

Syegorius
Завсегдатай
Зарегистрирован: 29.10.2010
Сообщений: 28

Re: как правильно написать запрос

извиняюсь что проснулся аж щас после нескольких месяцев пропажи... вообщем я изначально не правильно задал вопрос.
было:

Syegorius написал:

нужно найти все item_id, у которых tag=flash или tag=drive, но так что б item_id не повторялось

на самом деле правильно вопрос звучал бы так:

нужно найти все item_id, у которых tag=flash и tag=drive, но так что б item_id не повторялось.

если все еще тема актуальна пожалуйста подскажите как правильно написать запрос для таблицы вверху.

заранее спасибо!

Отредактированно Syegorius (24.12.2012 21:42:10)

Неактивен

 

#5 24.12.2012 23:24:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: как правильно написать запрос

Если комбинация  (tag, item_id) уникальна, то

SELECT `item_id` FROM `tags` WHERE `tag` IN ('flash', 'drive') GROUP BY 1 HAVING count(*)=2;

Неактивен

 

#6 24.12.2012 23:47:34

Syegorius
Завсегдатай
Зарегистрирован: 29.10.2010
Сообщений: 28

Re: как правильно написать запрос

но если я правильно понял выражение, то тогда этот запрос подойдет только для тех случаев, когда требуется взять сразу все совпадения.

я имею в виду, что данный запрос мне нужен для того, что бы искать товары в базе по запросу клиента и если допустим по его запросу будет 100 товаров, а на странице выводится только по 20, то как мне потом указать, что искать нужно только по 20 товаров и с какого-то определенного места?

Неактивен

 

#7 25.12.2012 04:53:50

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: как правильно написать запрос

Неактивен

 

#8 26.12.2012 21:48:30

Syegorius
Завсегдатай
Зарегистрирован: 29.10.2010
Сообщений: 28

Re: как правильно написать запрос

а. хотя извиняюсь! это был глупый вопрос. я все понял.

спасибо за помощь!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson