2010-05-06 6 views
0

У меня есть этот запрос:Еще один новобранный вопрос; Как реализовать Count() здесь?

SELECT mt.*, fordon.*, boende.*, elektronik.*, business.*, hem_inredning.*, hobby.* 
FROM classified mt 
LEFT JOIN fordon ON fordon.classified_id = mt.classified_id 
LEFT JOIN boende ON boende.classified_id = mt.classified_id 
LEFT JOIN elektronik ON elektronik.classified_id = mt.classified_id 
LEFT JOIN business ON business.classified_id = mt.classified_id 
LEFT JOIN hem_inredning ON hem_inredning.classified_id = mt.classified_id 
LEFT JOIN hobby ON hobby.classified_id = mt.classified_id 
ORDER BY modify_date DESC 

мне нужно осуществить подсчет здесь, просто сосчитать все строки в сочетании с JOINS вы видите.

Как мне это сделать?

SELECT COUNT(mt.*, fordon.* etc) FROM? // Этот метод не будет работать

Благодаря

+1

Позор вам для использования select * в любом запросе с присоединением. Когда вы делаете это, вы возвращаете данные, которые вам не нужны (поля объединений дублируются) и заставляют сервер выполнять ненужную работу и отправлять больше информации по вашей сети, чем это необходимо. Если вы делаете это по большинству запросов, вы вызываете проблемы с производительностью буквально без причины, кроме лени. Очень плохая практика. – HLGEM

+0

HLGEM, для упрощения, обычно используется 'SELECT *' в примерах здесь. В то время как пользователь не должен использовать их в производственном коде, и это здорово напоминать OP, «стыд на вас» - это прыжок с пистолета. –

ответ

3

Я удалил ORDER BY, как это не требуется для COUNT:

SELECT count(*) 
FROM classified mt 
LEFT JOIN fordon ON fordon.classified_id = mt.classified_id 
LEFT JOIN boende ON boende.classified_id = mt.classified_id 
LEFT JOIN elektronik ON elektronik.classified_id = mt.classified_id 
LEFT JOIN business ON business.classified_id = mt.classified_id 
LEFT JOIN hem_inredning ON hem_inredning.classified_id = mt.classified_id 
LEFT JOIN hobby ON hobby.classified_id = mt.classified_id 
+0

И, наконец, как мне получить nr строк? $ Рез = mysql_query ($ запроса); Тогда что мне делать? – 2010-05-06 15:38:52

+0

@Camran: он вернет таблицу с одной строкой и одним столбцом. – newtover

+0

, пожалуйста, ребята, название говорит «новобранец». Дайте мне код ... – 2010-05-06 15:46:47

1
SELECT COUNT(*) FROM (SELECT mt.*, fordon.*, boende.*, elektronik.*, business.*,  hem_inredning.*, hobby.* 
FROM classified mt 
LEFT JOIN fordon ON fordon.classified_id = mt.classified_id 
LEFT JOIN boende ON boende.classified_id = mt.classified_id 
LEFT JOIN elektronik ON elektronik.classified_id = mt.classified_id 
LEFT JOIN business ON business.classified_id = mt.classified_id 
LEFT JOIN hem_inredning ON hem_inredning.classified_id = mt.classified_id 
LEFT JOIN hobby ON hobby.classified_id = mt.classified_id) As A 
+0

Это плохая идея! Это приведет к созданию огромной временной таблицы, из которой вам не нужны никакие данные. – newtover

0

Как насчет просто:

SELECT COUNT(*) FROM ... 
0

Как насчет SELECT COUNT(*) FROM ...? Я не уверен, что вы пытаетесь подсчитать.

+0

Я пытаюсь сосчитать nr строки найдены ... Нужно это для подкачки ... Почему ответы такие разные? – 2010-05-06 15:35:00

+0

@Camran, вы пытаетесь считать все в этих таблицах? Или просто определенная таблица? Если вы пытаетесь подсчитать все, SELECT COUNT (*) работает – ggfan

+0

Нет, не все, только строки, которые JOINED, проверьте мой запрос – 2010-05-06 15:39:37

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