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 :: Помогите составить запрос

 PHP.SU

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


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

> Без описания
LifePlay
Отправлено: 02 Июля, 2011 - 19:06:09
Post Id



Частый гость


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


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




Есть 2 таблицы
1 news
id_news | id_user | time_news | subject_news | text_news
2 user
id_user | nickname_user | name_user | surname_user

Задача составить запрос для вывода новостей по очереди и чтоб в строчках был nickname_user
Тоесть в результате получалось
id_news | id_user | nickname_user | time_news | subject_news | text_news
 
 Top
Мелкий Супермодератор
Отправлено: 02 Июля, 2011 - 19:30:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id_news, id_user, nickname_user, time_news, subject_news, text_news FROM news LEFT JOIN user ORDER BY time_news


-----
PostgreSQL DBA
 
 Top
LifePlay
Отправлено: 03 Июля, 2011 - 18:27:06
Post Id



Частый гость


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


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




Не работает. Огорчение
 
 Top
Champion Супермодератор
Отправлено: 03 Июля, 2011 - 19:03:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




NATURAL LEFT JOIN
(Добавление)
остальная часть запроса без изменений. А еще когда не работает, надо описывать, как не работает.
 
 Top
LifePlay
Отправлено: 03 Июля, 2011 - 19:45:07
Post Id



Частый гость


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


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




Спасибо. Заработоло
 
 Top
LifePlay
Отправлено: 04 Июля, 2011 - 17:48:31
Post Id



Частый гость


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


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




Привет всем.
Помогите теперь добавить ещё один параметр.

есть таблица
3 news_commentary
id_commentary | id_news | id_user | time_commentary | text_commentary

Надо в запрос что выше добавить

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT COUNT(`id_commentary`) FROM `news_commentary` WHERE `id_news` = ".$news['id_news']."

Чтоб одним запросом ещё и количество комментариев узнать.
 
 Top
Champion Супермодератор
Отправлено: 04 Июля, 2011 - 20:51:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




Надо уже взять и прочитать про JOIN, COUNT и GROUP BY.

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id_news,  count(*) cnt
  2. FROM news
  3. NATURAL LEFT JOIN news_commentary
  4. GROUP BY id_news

(Добавление)
А если эту цифру надо добавить в предыдущий запрос, то что-то типа

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id_news, id_user, nickname_user, time_news, subject_news, text_newsб count(*) cnt
  2. FROM news
  3. LEFT JOIN user USING(user_id)
  4. LEFT JOIN news_commentary USING(id_news)
  5. GROUP BY id_news
  6. ORDER BY time_news


в mysql вроде можно так
 
 Top
LifePlay
Отправлено: 05 Июля, 2011 - 22:34:01
Post Id



Частый гость


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


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




В итоге такой запрос:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `id_news`, `id_user`, `nickname_user`, `time_news`, `subject_news`, `text_news`, count(*) cnt
  2. FROM `zc_news`
  3. LEFT JOIN `zc_user` USING(`id_user`)
  4. LEFT JOIN `zc_news_commentary` USING(`id_news`)
  5. ORDER BY `time_news` DESC
  6. LIMIT 0, 10


Выдаёт ошибку : #1052 - Column 'id_user' in field list is ambiguous
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB