2014-01-05 2 views
-1

У меня 3 таблицы: «новости», «комментарии» и «руб». Мне нужно получить все данные из «новостей», получить «название» от «руб» и подсчитать количество комментариев для каждой новости.Как я могу получить данные из 3 таблиц?

Теперь я не могу получить «титул» от «руб». Приведенный ниже код работает:

SELECT n.id,n.header,n.text, COUNT(c.news_id) AS comments 
FROM news n 
LEFT JOIN comments c ON n.id = c.news_id 
GROUP BY n.id 
ORDER by n.id 
LIMIT 30 

Но мне нужно что-то подобное, и этот код не работает (вызов функции члена fetch_array() на не-объект):

SELECT n.id,n.header,n.text,r.title COUNT(c.news_id) AS comments 
FROM news n,rub r 
LEFT JOIN comments c ON n.id = c.new_id AND r.news_id=n.id 
GROUP BY n.id ORDER by n.id 
LIMIT 30 

Как почини это?

+1

Вы пропускаете запятую ',' до 'функции COUNT' в вашей второй заявление. Мы не можем видеть ваш PHP-код, но я предполагаю, что вы не проверяете ошибки базы данных до получения результатов. – halfer

+0

И другие опечатки. То, что вы делаете неправильно, - это то, что написал halfter: вы даже не спрашиваете базу данных о конкретной ошибке. Ты летел слепой. Вы должны как база данных для ошибки. Также см. Много дубликатов этой ошибки: https://stackoverflow.com/search?q=Call+to+a+member+function+fetch_array%28%29+on+a+non-object – hakre

+0

@Narendra, сокращение «Я» должен иметь в себе апостроф ';-)' – halfer

ответ

0

Это не совсем ясно, что вы спрашиваете, но вам нужен еще один JOIN. И вам нужно переместить условие соединения для rub таблицы к этому JOIN ключевому слову, не в состоянии присоединиться к comments таблице

SELECT n.id, 
     n.header, 
     n.text, 
     r.title, -- comma was missing (as halfer mentioned) 
     COUNT(c.news_id) AS comments 
FROM news n 
    JOIN rub r ON r.news_id=n.id --- this is missing 
    LEFT JOIN comments c ON n.id = c.new_id -- no join condition for rub/news here 
GROUP BY n.id 
ORDER by n.id 
LIMIT 30 

Ваше использование оператора GROUP BY также является неправильным. Вышеуказанный запрос будет (по праву) отклонен всеми другими СУБД.

Пожалуйста следующее, чтобы понять, почему ваш GROUP BY неправильно:

+0

Да, я сделал это минуту назад! – aspermag

Смежные вопросы