powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / INNER JOIN, Запрос
6 сообщений из 6, страница 1 из 1
INNER JOIN, Запрос
    #38801397
kumirska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер, форумчане!
Вопрос простой, для тех, кто пишет запросы к БД часто, на знание синтаксиса SQL.
Имеется таблица: 'an_site_tmplvar_contentvalues' со структурой:
Код: sql
1.
2.
3.
4.
`id` int(11) NOT NULL AUTO_INCREMENT,
`tmplvarid` int(10) NOT NULL DEFAULT '0',
`contentid` int(10) NOT NULL DEFAULT '0',
`value` text



В поле id хранится айдишник, который не играет никакой для меня сейчас роли. В поле tmplvarid хранится адишник поля, выводимого на странице. У каждого поля свой tmplvarid , например у поля "Страна" tmplvarid =10, для поля "Регион" tmplvarid =9. Поле contentid - это айдишник страницы, на которой расположено поле. В поле value - значение данного поля (например "регион" для страницы с указанным contentid . Получается в одной таблице хранятся все экземпляры всех полей для заполнения, привязанных к айди страницы.

Моя задача сделать выборку contentid . Известен массив Чтобы сделать фильтр выборки из таблицы, я пришел к выводу, что нужен INNER JOIN.Немного покопавшись, я набросал такой запрос:
Код: sql
1.
2.
3.
4.
5.
SELECT t1.contentid
FROM `an_site_tmplvar_contentvalues` t1
WHERE t1.tmplvarid=9 and t1.value=1
  INNER JOIN `an_site_tmplvar_contentvalues` t2 ON t1.contentid=t2.contentid
WHERE t2.tmplvarid=6 and t2.value=12 and t1.contentid IN(41,40,39,43,42,33)



Пояснения: нужно выбрать их табл. все contentid ресурсов, у которых поле с tmplvarid =9 и значением value =1 (поле "город", значение "Ростов"), из полученных contentid мне нужны только те ресурсы, где поле tmplvarid =6 имеет значение value =12 (поле район, значение "Адмиралтейский"). Надеюсь понятно описал суть проблемы. Подскажите, если кто-то вник, пожалуйста
...
Рейтинг: 0 / 0
INNER JOIN, Запрос
    #38801471
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kumirskaНадеюсь понятно описал суть проблемы.Переформулирую: найти все контентид, для которых есть как записи с (tmplvarid=9 и value=1), так и (tmplvarid=6 и value=12).
Ну вот, например http://www.sql.ru/forum/1044837/pomogite-sozdat-zapros-s-group-by
...
Рейтинг: 0 / 0
INNER JOIN, Запрос
    #38801541
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot tanglir]kumirskaнайти все контентид, для которых есть как записи с (tmplvarid=9 и value=1), так и (tmplvarid=6 и value=12)
Код: sql
1.
2.
3.
WHERE (tmplvarid,value) IN ((9,1),(6,12))
GROUP BY contentid
HAVING COUNT(DISTINCT contentid)=2
...
Рейтинг: 0 / 0
INNER JOIN, Запрос
    #38801598
kumirska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! У меня кстати получился запрос рабочий, стоит ли его менять на подобный Вашему?

Код: sql
1.
2.
3.
SELECT t1.contentid FROM `an_site_tmplvar_contentvalues` t1 
INNER JOIN `an_site_tmplvar_contentvalues` t2 ON t1.contentid=t2.contentid 
WHERE t1.tmplvarid=9 and t1.value=1 and t2.tmplvarid=6 and t2.value=1 and t1.contentid IN(41,40,39,43,42,33)
...
Рейтинг: 0 / 0
INNER JOIN, Запрос
    #38801725
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kumirskaстоит ли его менять на подобный Вашему?
А если значений будет не две пары, а три? четыре?
...
Рейтинг: 0 / 0
INNER JOIN, Запрос
    #38801754
kumirska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, ну значений больше не будет, только 2: tmplvarid и value. А вот количество join-ов может быть 2-6. Значит все-таки следует не делать через JOIN? Я не силен в MySql оптимизации, наковырял инфу, долго пытался, сделал рабочий запрос, но мне интересно мнение людей знающих, надо ведь все делать правильно
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / INNER JOIN, Запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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