Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Выборка 2 значений из 1 столбца

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Ismail
Отправлено: 11 Мая, 2014 - 20:05:09
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Есть 2 таблицы и столбцы в них:

1 таблица:

ID, post_title
1, Название_1
2, Название_2
3, Название_3
4, Название_4

2 таблица:

post_id, meta_key, meta_value
1, thumb, картинка
1, site, ссылка
2, thumb, картинка
2, site, ссылка
3, thumb, картинка
3, site, ссылка
4, thumb, картинка
4, site, ссылка


ID и post_id содержат номер поста, используя в запросе WHERE ID=post_id я вытаскиваю данные из 2 таблиц.

Нужно вытащить значение meta_value где WHERE meta_key=thumb и meta_key=site.

В цикле, при выводе я пишу $row['meta_value'] - для вывода картинки. Теперь вопрос, что писать для вывода "ссылка", $row['meta_value']??

(Отредактировано автором: 11 Мая, 2014 - 20:10:36)

 
 Top
Panoptik
Отправлено: 11 Мая, 2014 - 20:46:11
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT t1.*, t_site.meta_value site, t_thumb.meta_value thumb
  2. FROM tbl1 t1
  3. LEFT JOIN tbl2 t_site
  4.   ON t_site.post_id = t1.id
  5.     AND meta_key = 'site'
  6. LEFT JOIN tbl2 t_thumb
  7.   ON t_thumb.post_id = t1.id
  8.     AND meta_key = 'thumb'
  9. WHERE t1.id = ID


(Отредактировано автором: 11 Мая, 2014 - 20:46:53)



-----
Just do it
 
 Top
Ismail
Отправлено: 11 Мая, 2014 - 20:58:45
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Если я правильно понял, нужно заменить tbl1 и tbl2 на мои первую и вторую таблицы? Если так, то пишет :

SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'meta_key' in on clause is ambiguous
 
 Top
Panoptik
Отправлено: 11 Мая, 2014 - 21:00:59
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




верно пишет, нужно добавить алиасы к полям

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT t1.*, t_site.meta_value site, t_thumb.meta_value thumb
  2. FROM tbl1 t1
  3. LEFT JOIN tbl2 t_site
  4.   ON t_site.post_id = t1.id
  5.     AND t_site.meta_key = 'site'
  6. LEFT JOIN tbl2 t_thumb
  7.   ON t_thumb.post_id = t1.id
  8.     AND t_thumb.meta_key = 'thumb'
  9. WHERE t1.id = ID

(Добавление)
в конце ID я так понимаю вы тоже подставите то что вам нужно или уберете WHERE вообще


-----
Just do it
 
 Top
Ismail
Отправлено: 11 Мая, 2014 - 21:12:58
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Работает.

Но я забыл указать, что из всех записей нужно выбирать только те, у которых в первой таблице значение столбца post_type = post и post_status = publish (в первой таблице).

Очень извиняюсь что сразу не написал. Огорчение Огорчение
 
 Top
Panoptik
Отправлено: 11 Мая, 2014 - 21:14:11
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




ну так кто вам мешает добавить эти условия?


-----
Just do it
 
 Top
Ismail
Отправлено: 11 Мая, 2014 - 21:37:22
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Спасибо большое, что-то туплю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB