Максим П.
165 повідомлень
#15 років тому
Совершенно не силен в MySQL.
Есть такой WHERE:
WHERE meta_key = 'ImageURL';

Как его переписать чтобы сказать мускулу: выбрать записи, где отсутствует meta_key ImageURL?
Сергей Ф.
15 повідомлень
#15 років тому
Какой тип поля? Как вариант - WHERE meta_key != 'ImageURL';
Роман Беляев
16382 повідомлення
#15 років тому
Что там в поле за значения? какие конкретно надо выбирать?
Максим П.
165 повідомлень
#15 років тому
Сам запрос
   $request = "SELECT ID, meta_key, post_id, post_status, post_type, meta_value
FROM $wpdb->posts, $wpdb->postmeta
WHERE post_status='publish' AND post_type='post' AND meta_key = 'ImageURL' AND ID=post_id";

Движок wordpress. Если испольщовать != то запрос все равно выбирает поля. потому что у одной записи может быть несколько meta_key. Аналогично не работает SELECT ! meta_key. В том плане что мета кей он не выбирает, а остальные поля очень даже.
Никита К.
1594 повідомлення
#15 років тому
AND NOT (meta_key = 'ImageURL'
Никита К.
1594 повідомлення
#15 років тому
Не уверен правда в работоспособности
Роман Беляев
16382 повідомлення
#15 років тому
Цитата ("adrianis"):
Сам запрос


в таблице ЧТО? Надо знать из чего выбираем. Из чего выбираем и что надо выбрать.
Максим П.
165 повідомлень
#15 років тому
Цитата:
в таблице ЧТО? Надо знать из чего выбираем. Из чего выбираем и что надо выбрать.

Строка. Я не силен в mysql, поэтому может не правильно тебя понимаю. Выбрать надо значения ID, meta_key, post_id, post_status, post_type, meta_value при истинных условиях в where. post_id, meta_value и meta_key хранятся в таблице postmeta
Роман Беляев
16382 повідомлення
#15 років тому
Есть набор строк, в каждой свое. надо отфильтровать их по определенному критерию. Чтобы отфильтровать то, что нужно надо знать ИЗ ЧЕГО фильтровать. Т.е. надо знать что есть, что должно быть на выходе и тогда уже строить условие которое из первого отфильтрует второе.
Максим П.
165 повідомлень
#15 років тому
Так понятнее:
Тут М.
626 повідомлень
#15 років тому
Примерно так:
"SELECT ID, meta_key, post_id, post_status, post_type, meta_value
FROM $wpdb->posts a, $wpdb->postmeta
WHERE post_status='publish' AND post_type='post'
AND NOT EXISTS(SELECT 1 FROM $wpdb->postmeta b WHERE b.post_id=a.ID AND meta_key = 'ImageURL');

Но тут могут быть нюансы когда совсем нет мета записей
Максим П.
165 повідомлень
#15 років тому
Цитата:
Дайте структуру таблиц (особенно postmeta )

Роман Беляев
16382 повідомлення
#15 років тому
Конкретно что надо выбрать? Вариант ferggren выберет все строки у которых meta_key НЕ ImageURL
Что надо выбрать?
Николай М.
1895 повідомлень
#15 років тому
=NULL?
Тут М.
626 повідомлень
#15 років тому
Цитата ("frig"):
Конкретно что надо выбрать? Вариант ferggren выберет все строки у которых meta_key НЕ ImageURL
Что надо выбрать?

Тот вариант выбирает все строки, у которых хотя бы одна мета-запись не ImageURL, а надо выбрать те, у которых ни одна мета-запись не ImageURL
Максим П.
165 повідомлень
#15 років тому
Выбрать надо минимум ID.
Вариант != не пашет потому что неколько meta_key. То есть если взглянуть на скрин: , то выбирется запись с ID минимум 11 раз.
Максим П.
165 повідомлень
#15 років тому
Цитата ("MMM_Corp"):
=NULL?

Это как понять?
Тут М.
626 повідомлень
#15 років тому
Цитата ("adrianis"):
Выбрать надо минимум ID.

Лучше это объясните Дошло, после SELECT добавьте DISTINCT

И всё же попробуйте мой вариант
Роман Беляев
16382 повідомлення
#15 років тому
Задача все равно не ясна.

Цитата:
то выбирется запись с ID минимум 11 раз.


Допишите в конце GROUP BY post_id
Максим П.
165 повідомлень
#15 років тому
Цитата:
И всё же попробуйте мой вариант

я его сразу не заметил. Попробовал, повесился мускул