Je souhaite récupérer les 10 derniers posts des catégories mère, pour ceci je voudrais faire une requête imbriqué mais j'ai ce message d'erreur:
#1241 - Operand should contain 1 column(s)
Pourriez-vous regarder ma requête et me dire si vous voyez ou est l'erreur parce que la je sèche.
merci
SELECT `Post`.`id`, `Post`.`title`, `Post`.`link`, `Post`.`nb_vue`, `Post`.`category_id`, `Post`.`created`
FROM `posts` AS `Post`
WHERE `Post`.`category_id`
IN (
SELECT `Category`.`id`, `Category`.`parent_id`
FROM `categories` AS `Category`
WHERE `Category`.`parent_id` IS NULL
ORDER BY `Category`.`id` ASC
)
ORDER BY `nb_vue` desc, `created` desc
LIMIT 10
J'ai donc ma première requête qui cherche les champs dont j'ai besoin dans la table posts limité à 10 (pour 10 posts pas catégories) et dans le IN j'ai la requête qui cherche les catégories mère qui non pas de parent_id.
Aille !! comment je vais faire j'ai besoin de ces deux colonnes pour définir les id que je veux dans la seconde requête, ont peux pas contourner cette chose?
Je trouve sa plus propre, c'est un coup que j'ai pris sur cakephp qui écris toutes les requêtes ainsi.
Effectivement, parent_id vaut toujours NULL, quel est l'intérêt de le sélectionner ?
Et, encore une fois, je suis d'accord avec Taguan, ça ne rend pas une requête plus propre. Pire, elle est beaucoup plus difficile à lire. D'ailleurs, inutile de préfixer tes colonnes par le nom de tes tables lorsque ce n'est pas obligatoire. Encore une fois, ça alourdit ta requête. Dernière chose : ORDER BY dans une sous-requête, c'est mal, surtout quand il ne sert en rien.
Au final, si on réécrit correctement ta requête, on passe de 382 à 195 caractères. C'est déjà ça de moins.
Bonjour, je savais pas qu'on pouvais faire une condition sur une colonne qu'on demandais pas chercher à mysql donc effectivement la sous requête comme ceci fonctionne:
SELECT id FROM categories WHERE parent_id IS NULL
J'ai pas vraiment le choix de l'écriture de la requête je l'écris sous forme de tableau php en réalité ce que je vous transmet c'est juste le retour que cakephp me donne, j'ai pas trop envie de supprimer tout les index de table avant de la poster qu'elle fainéant
Erreur requête imbriqué
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Tutoriel complet MySQL !