2010-05-06 5 views
0

J'ai cette requête:Une autre question de débutant; Comment implémenter Count() ici?

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 

je dois mettre en œuvre un compte ici, pour compter que toutes les lignes en combinaison avec le REJOINT vous voyez.

Comment est-ce que je devrais faire ceci?

SELECT COUNT(mt.*, fordon.* etc) FROM? // Cette méthode ne fonctionnera pas

Merci

+1

Honte à vous d'utiliser select * dans n'importe quelle requête avec une jointure. Lorsque vous faites cela, vous renvoyez des données dont vous n'avez pas besoin (les champs de jointures sont dupliqués) et obligez le serveur à effectuer un travail inutile et à envoyer plus d'informations que nécessaire sur votre réseau. Si vous faites cela sur la plupart des requêtes, vous causez des problèmes de performance pour littéralement aucune raison autre que la paresse. Très mauvaise pratique. – HLGEM

+0

HLGEM, par simplification, il est courant d'utiliser 'SELECT *' dans les exemples ici. Alors que l'utilisateur ne devrait pas les utiliser dans le code de production, et c'est génial de rappeler à l'OP, "honte à vous" est de sauter le pistolet. –

Répondre

3

J'ai enlevé le ORDER BY, car il n'est pas nécessaire pour le 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

Et enfin, comment puis-je récupérer le nr de lignes? $ res = mysql_query ($ query); Alors qu'est-ce que je fais? –

+0

@Camran: il retournera une table avec une seule ligne et une seule colonne. – newtover

+0

s'il vous plaît les gars, le titre dit "recrue". Donnez-moi le code ... –

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

C'est une mauvaise idée! Il en résulterait une énorme table temporaire à partir de laquelle vous n'avez besoin d'aucune donnée. – newtover

0

Que diriez-vous simplement:

SELECT COUNT(*) FROM ... 
0

Que diriez-vous de SELECT COUNT(*) FROM ...? Je ne suis pas sûr de ce que vous essayez de compter.

+0

J'essaie de compter nr de lignes trouvées ... Besoin de pagination ... Pourquoi les réponses sont-elles si différentes? –

+0

@Camran, essayez-vous de tout compter dans ces tables? Ou juste une certaine table? Si vous essayez de compter tout, SELECT COUNT (*) fonctionne – ggfan

+0

Non, pas tous, seulement les lignes qui sont jointes, vérifiez ma requête –