powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из таблицы на основании данных другой таблицы
5 сообщений из 5, страница 1 из 1
Выборка из таблицы на основании данных другой таблицы
    #38850702
Hama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Есть две таблицы: user и user_param

Упрощенная структура таблиц:

Столбцы таблицы user :
user_id
email
passwd

столбцы таблицы user_param
param_id
user_id
name
value

Таблицы связаны соответственно полем user_id

в таблице user_param содержится неограниченное кол-во параметров, таких, как страна, город и т.д.

Допустим у юзера есть 2 параметра:
name = 'country', value = 'Россия' и
name = 'city', value = 'Москва'

Вопрос: как одним запросом достать юзера, у которого совпадают оба параметра?

Хотелось бы придумать что-то на подобии этого:

Код: sql
1.
2.
3.
4.
5.
SELECT * FROM user WHERE user_id IN (
	SELECT user_id FROM user_param WHERE
		(name = 'country' AND value LIKE '%Россия%') OR
		(name = 'city' AND value LIKE '%Москва%')
)



Такой вариант, естественно не подходит, т.к. тут кроме москвы и другие города будут, а если в подзапросе заменить OR на AND возвращается пустой результат.

Возможно кто-то сталкивался с подобной задачей и сможет помочь.

Спасибо за внимание!
...
Рейтинг: 0 / 0
Выборка из таблицы на основании данных другой таблицы
    #38850931
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hama,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select user_id from user_param
where
name= :p1 and value like :v1 or
name= :p2 and value like :v2 or
...
name= :pN and value like :vN
group by user_id
having count(*)=N
...
Рейтинг: 0 / 0
Выборка из таблицы на основании данных другой таблицы
    #38850932
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hama,

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

напиши запрос, который надо тебе, для случая

есть три таблицы.
Users country_params(id,name,value,user_id) city_params(id,name,value,user_id)


users :
1,'vasya',....

country_params :
1, 'cname', 'Russia',1
2, 'ca3', 'RUS',1
3, 'domain', 'ru',1
4, 'code' , '+7',1

city_params
1,'cname' , 'Moscow',1
2,'region' , ... , 1
3,'timezone', 2,1
...

вот для этого случая найди где юзер имеет страну cname = 'Russia'
AND cname = 'Moscow' только поля из разных таблиц.

:)
...
Рейтинг: 0 / 0
Выборка из таблицы на основании данных другой таблицы
    #38850936
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотищаHama,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select user_id from user_param
where
name= :p1 and value like :v1 or
name= :p2 and value like :v2 or
...
name= :pN and value like :vN
group by user_id
having count(*)=N



а вот и не скукотища

params

1, 'city_name', 'Moscow', 123
2, 'city_name', 'Kiev', 123
ну вот так вот...юзер может указать себе несколько городов... бомж он кароче, живёт то там то сям. :)
...
Рейтинг: 0 / 0
Выборка из таблицы на основании данных другой таблицы
    #38850967
lamer yuga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hama,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT u.* 
FROM user u
WHERE EXISTS(
  SELECT 1 FROM user_param 
  WHERE user_id=u.user_id
    AND name = 'country' AND value LIKE '%Россия%') 
AND EXISTS(
  SELECT 1 FROM user_param 
  WHERE user_id=u.user_id
    AND name = 'city' AND value LIKE '%Москва%')

а вообще гуглите реляционное деление, там еще куча способов
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из таблицы на основании данных другой таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]