MySQL OÙ DANS une Requête de COMMANDE PAR Correspondance
MIS À JOUR QUESTION
Bonjour,
je vais essayer de reformuler ma question, la cause de mon dernier n'était pas clair pour tout le monde.
C'est ma Table de Test
+----------+---------+-------+
| rel_id | genre | movie |
+----------+---------+-------+
| 1 | 1 | 3 |
| 2 | 8 | 3 |
| 3 | 3 | 3 |
| 4 | 2 | 5 |
| 5 | 8 | 5 |
| 6 | 3 | 5 |
| 7 | 1 | 8 |
| 8 | 8 | 8 |
| 9 | 3 | 8 |
| 10 | 5 | 9 |
| 11 | 7 | 9 |
| 12 | 9 | 9 |
| 13 | 4 | 9 |
| 14 | 12 | 9 |
| 15 | 1 | 10 |
| 16 | 8 | 10 |
| 17 | 3 | 10 |
| 18 | 5 | 10 |
| 19 | 1 | 11 |
| 20 | 2 | 11 |
| 21 | 8 | 11 |
| 22 | 5 | 11 |
| 23 | 3 | 11 |
+----------+---------+-------+
Résultat devrait être dans l'ordre suivant si je regarde pour des films de genre 1, 8, 3 : Film n'. 3, 8, 10, 5, 11 (9 est out).
Si il n'est pas possible, alors je veux juste tous avec la correspondance exacte "1, 8, 3", dans ce cas, je voulais juste obtenir film pas. 3 ET 8.
Merci!
ne de votre requête? Il regarde d'abord pour tous les films avec l'un des genres et des groupes par le film.
Il semble fonctionner comme prévu, film 5 a la fois sur le genre 8 et 3 mais pas le 1. Voulez-vous dire que vous souhaitez obtenir des films qui ont tous ces genres?
Ouais c'est correct, parce que après je reçois la correspondance exacte que j'ai besoin à la sortie des films. Et j'ai juste besoin de LE film, et non pas 3 fois le même. J'espère que vous comprenez 😀
Richesses je veux obtenir un premier film, 3 et 8, car ils ont eu le bon genre de match de genre 1, 8, 3 et le dernier résultat doit être le film pas. 5 car ici, c'est juste la première du genre pas le même, mais la deuxième et la troisième a obtenu le droit de match. Comprendre? 🙂
votre question n'est pas claire;
Il semble fonctionner comme prévu, film 5 a la fois sur le genre 8 et 3 mais pas le 1. Voulez-vous dire que vous souhaitez obtenir des films qui ont tous ces genres?
Ouais c'est correct, parce que après je reçois la correspondance exacte que j'ai besoin à la sortie des films. Et j'ai juste besoin de LE film, et non pas 3 fois le même. J'espère que vous comprenez 😀
Richesses je veux obtenir un premier film, 3 et 8, car ils ont eu le bon genre de match de genre 1, 8, 3 et le dernier résultat doit être le film pas. 5 car ici, c'est juste la première du genre pas le même, mais la deuxième et la troisième a obtenu le droit de match. Comprendre? 🙂
votre question n'est pas claire;
OriginalL'auteur richie | 2012-03-21
Vous devez vous connecter pour publier un commentaire.
Si je comprends bien, vous voulez trier les résultats en fonction du nombre de matches joués dans l'ordre décroissant. Pour ce faire, vous pouvez essayer:
Et si vous voulez les films qui correspondent à tous les critères, vous pouvez utiliser:
Mise à JOUR:
C'est le mieux que je puisse faire dans MySql. Vous ne pouvez pas utiliser parce que vous ne pouvez pas extraire des informations concernant l'ordre des filtres. Si vous ajoutez de la table dérivée comme un moyen de filtrage, vous pouvez ajouter ces informations et les utiliser pour montrer des résultats par la position des matchs. Notez que vous n'avez pas à fournir toute commande d'infos dans genre_rel table de sorte que vous ne savez pas vraiment l'importance de genres par film. Cette requête va vous donner la correspondance des films par ordre décroissant d'importance des genres dans les critères:
Noter que tous les films sauf les 5 appartiennent à tous les 3 genres. Si vous ajoutez une colonne à genre_rel représentant ordre d'importance que vous pourriez élaborer un peu plus de mathématiques (poids importance ou quelque chose de similaire).
Je ne comprends pas. Vous avez 3 films et 3 genres, où ce sont quatre nombres en venir? Cette requête retourne exactement 3, 8, 5 - je l'ai testé avant de poster comme réponse.
Je pense que vous me comprenez 🙂 Parce que la seconde requête que vous avez posté est en train de faire exactl ce que je veux! 🙂 Merci beaucoup soo
Hmm les premiers résultats ont été ok, mais le suit pas. J'ai posté un autre exemple sur pastebin s'il vous Plaît gardez à l'esprit, je suis à l'aide de 3 Genres comme un exemple. Il est possible que la requête peut avoir 5 Genres dans la clause where
Ah, vous voulez les films dans l'ordre où ils sont énumérés en ()! Je crains que non, mais je ne suis pas compétent dans MySql, donc vous pouvez tenter votre chance avec le nouveau, mieux rédigé question.
OriginalL'auteur Nikola Markovinović
Vous pouvez faire cela par manière suivante:
OriginalL'auteur
Vous avait donné De critères sur le genre de la colonne. Si vous film 5 contiennent également du genre 8 & 3 aussi. En raison de cette raison, vous obtenez le film 5.
OriginalL'auteur kandarp
Comment au sujet de quelque chose comme:
Merci pour votre aide Tomasz.Cette requête près de donne-moi les résultats que je voulais. Mais c'est également de retour film avec des genres dans cet ordre 1, 8, 4, 3 - Mais ces films doivent être retournés dans les résultats de la dernière
Vous avez raison, bien sûr COMPTAGE doit être utilisé ici à la place de SOMME!
OriginalL'auteur Tomasz Machura
Essayer cette requête -
Où 1000 est un afin de compenser pour les films qui ne correspondent pas, augmentez cette valeur si vous avez besoin d'.
Aussi, vous pouvez essayer cette COMMANDE PAR
OriginalL'auteur Devart