Задать вопрос
@Souvel1
Web-программист. Разрабатываю на WordPress.

Как можно сделать подобную выборку?

Есть база
Вариант 1.
ID - nesting - key
1 - 2 - type=2&count=12
2 - 1 - type=2
3 - 3 - type=5&count=12&meta=test
4 - 3 - type=2&count=12ℜ=direct
5 - 2 - type=2ℜ=direct

Вариант 1.
page_id - key - value
1 - type - 2
1 - count - 12
2 - type - 2
3 - type - 5
3 - count - 12
3 - meta - test
4 - type - 2
4 - count - 12
4 - real - direct
5 - type - 2
5 - real - direct

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

Имеем массив
$search = array('type' => 2, 'count' => 12, 'real' => 'direct');


И как составить запрос, чтобы по результату вернуло id записей 1, 2, 4, 5
т.е. все те где есть эти элементы но нет других

Надеюсь я понятно описал суть проблемы, если этого не достаточно, можете написать что еще нужно описать, чтобы не было пояснить суть вопроса
  • Вопрос задан
  • 232 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
redfieldone
@redfieldone
Старый , лысый и без денег.
Ну дык используйте цикл . Ну что то вроде

$search = array('type' => 2, 'count' => 12, 'real' => 'direct');

foreach ($search as $value => $key) {
echo "{$value} => {$key} "; (скобок не стесняйтесь, они используются для вывода переменной внутри эхо)
}
Ну собственно и работайте дальше с полученными данными.

П.С. Если я правильно понял.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `page_id`
  FROM `table`
  GROUP BY `page_id`
  HAVING COUNT(*) = SUM((`key` = 'type' AND `value` = '2') 
                         OR (`key` = 'count' AND `value` = '12') 
                         OR (`key` = 'real' AND `value` = 'direct'))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы