|
|
|
|
|
для: Betty
(10.02.2010 в 19:55)
| | Так спрашивайте, какие именно конструкции неясны :) | |
|
|
|
|
|
|
|
для: Trianon
(10.02.2010 в 10:22)
| | Еще раз с удовольствием благодарю!
Все работает. Единственно, что изменила LEFT JOIN на INNER JOIN, чтобы из "основной" таблицы выбирались ТОЛЬКО записи, для которых существуют нужный meta_key в таблице wp_postmeta.
Но, честно говоря, не все понимаю в вашем коде, буду искать, читать и разбираться... :) | |
|
|
|
|
|
|
|
для: Betty
(10.02.2010 в 10:03)
| | Учитесь мыслить конструкциями JOIN...ON
На самом деле это очень просто, если разок попробовать. | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2010 в 20:42)
| | Огромное спасибо!
"На глаз" не могу осилить... :) Разберусь - отпишусь о результате . | |
|
|
|
|
|
|
|
для: Betty
(09.02.2010 в 19:44)
| | >Требуется выбрать из таблицы значения 'post_id' для которых вернО СОЧЕТАНИЕ всех, введенных в поисковую форму данных.
Из таблицы выбираются строки, а не значения.
Фактически Вам, очевидно, нужно отобрать сущности , указуемые ключом post_id?
Это строки другой таблицы, если я правильно понимаю
SELECT p.*
FROM posts p
LEFT JOIN wp_post_meta mo ON p.id = mo.post_id AND mo.meta_key = 'dog_otez'
LEFT JOIN wp_post_meta mm ON p.id = mm.post_id AND mm.meta_key = 'dog_mama'
LEFT JOIN wp_post_meta mz ON p.id = mz.post_id AND mz.meta_key = 'dog_zavodchik'
WHERE
COALESCE(mo.meta_value, '') LIKE '%$otez%'
AND COALESCE(mm.meta_value, '') LIKE '%$mama%'
AND COALESCE(mz.meta_value, '') LIKE '%$zavodchik%'
|
Понятно , что потребуется полное сканирование таблиц. | |
|
|
|
|
|
|
|
для: Valick
(09.02.2010 в 14:10)
| | dog_zavodchik это тот, кто занимается разведением собак :)
Да, я тоже все больше склоняюсь к трем запросам... но, "надежда умирает последней..." | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2010 в 15:54)
| | дубль-пост... | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2010 в 15:54)
| | Я совсем запуталась... Видимо, все-таки не могу понятно объяснить задачу. Сейчас попытаюсь еще раз, "по простому" :).
Каталог собак. У каждой собаки своя учетная карточка. Основные данные хранятся в ДРУГОЙ таблице. Дополнительные данные находятся в вышеприведенной таблице. В столбце 'post_id' как раз и содержится ID основной записи (повторюсь, из другой таблицы).
Задача: организовать поиск. У формы поиска три текстовых поля:
Владелец собаки ( 'dog_vladelez'),
Отец собаки ('dog_papa'),
Мать собаки ('dog_mama')
Поля формы могут быть пустыми (т.е. ищется любое значение) или содержать какое-то слово (слог, букву и т.п.).
Требуется выбрать из таблицы значения 'post_id' для которых вернО СОЧЕТАНИЕ всех, введенных в поисковую форму данных.
Соответственно, дорогой Trianon, запрос из предыдущего поста не подходит, т.к. у wp_postmeta.meta_value могут быть три РАЗНЫХ значения... | |
|
|
|
|
|
|
|
для: Betty
(08.02.2010 в 15:00)
| | Я никого не бросаю, что Вы в самом деле.:)
Просто запарка небольшая на работе.
WHERE
wp_postmeta.meta_value LIKE '%somewhere%'
AND wp_postmeta.meta_key IN ('dog_vladelez', 'dog_mama', 'dog_papa')
|
GROUP BY и вправду без понимания применять не стоит. | |
|
|
|
|
|
|
|
для: Betty
(08.02.2010 в 15:00)
| | Зачем у вас GROUP BY в исходной задаче? может всетаки ORDER BY
И у Вас не совсем правильная логика, если бы искомые величины содержались в отдельных столбцах, то AND Вам помог бы (пример: wp_postmeta.meta_key = 'dog_mama' AND wp_postmeta.meta_value LIKE '%еще_что-то%'), у Вас же все в одном столбце.
Скрее всего Вам нужно три отдельных запроса, вот только до сих пор не понятно какую задачу Вы поставили перед собой.
___
кстати dog_zavodchik - это кто? О_о | |
|
|
|
|