2009-09-10 6 views
0

J'ai une page de table principale, et une table relative page_lang.In page_lang je tiens les données de la page pour chaque langue.mysql rejoindre et limiter

En utilisant le code ci-dessus

SELECT * FROM pages as p 
RIGHT JOIN pages_lang as l ON 
l.pageID=p.pageID 

je reçois les lignes contenant des pages de formulaire de données communes et les données linguistiques de page_lang.All OK

Le problème est quand rty de limiter les résultats

SELECT * FROM pages as p 
RIGHT JOIN pages_lang as l ON 
l.pageID=p.pageID 
LIMIT 0,10 

En utilisant cette requête, je m'attendais à sélectionner la première ligne de 10 pages et pour celles-ci, alors les lignes retournent les données de langue. Par exemple si j'ai 2 langues signifie retourner 10 lignes x 2 langues 20 lignes.

Bien sûr, la requête ne renvoie pas 20 lignes, mais seulement 10.

Je regarde comment faire cela en utilisant 1 requête parce que j'essaie de compter les requêtes sur chaque page pour être plus rapide.

Merci

+0

Que diriez-vous refactorisation en utilisant une vue, ou jouer avec des crochets? –

Répondre

1

Cela pourrait fonctionner (non testé):

SELECT * 
FROM 
    (SELECT * FROM pages LIMIT 0,10) p 
    RIGHT JOIN 
    pages_lang as l 
ON l.pageID = p.pageID; 
+0

Cela fonctionne oui. MAIS en utilisant 2 SELECT est une requête pour mysql ou est 2 requêtes –

+0

mais pas très bien je vais essayer de l'accorder –

+0

2 SELECTs est toujours une requête. –

Questions connexes