J'ai un site Web télévisé sur lequel je travaille et que je tente d'obtenir les épisodes de la table des épisodes mis à jour avec des actifs les plus récemment. Les deux tables ont l'air un peu comme ceci:
$sql = "SELECT * FROM episodes WHERE id IN ( SELECT episode_id FROM assets WHERE episode != '0' AND episode_id != '0' GROUP BY show_id ORDER BY last_updated DESC) LIMIT 5";
4 Réponses :
Vous pouvez utiliser quelque chose comme ceci:
SELECT a.*,b.show_id,b.last_updated FROM episodes A INNER JOIN assets B ON A.ID=B.epsiode_id INNER JOIN (SELECT Show_id,max(last_updated) as last_updated from assets group by show_id) C ON B.last_updated=C.last_updated and B.Show_id=C.Show_id ORDER BY last_updated DESC LIMIT 5
Hmmm. Cela redevient faux comme le résultat. :(
Tout d'abord, vous devez d'abord trouver la dernière mise à jour de chaque émission: maintenant, vous trouvez les épisodes: p> maintenant l'épisode Info: p>
Vous devez apporter les informations des actifs afin que vous ayez le show_id code>. Ensuite, vous pouvez rechercher le plus récent:
SELECT e.*, a.*
FROM episodes e JOIN
assets a
ON e.id = a.episode_id
WHERE a.last_updated = (SELECT MAX(a2.last_updated)
FROM assets a2
WHERE a2.episode <> '0' AND
a2.episode_id <> '0'
a2.show_id = a.show_id
)
qoute de la question strong> p> Voici les conditions que je veux: p>
- Je veux récupérer l'épisode, ou l'épisode est rejoint à la Asset. Li>
- Je veux seulement récupérer l'épisode le plus récemment mis à jour par spectacle (show_id) li>
- Je veux récupérer 5 (ou x numéro) d'épisodes. Li> ol>
Sans exemple de données et ni résultats attendus, il est un peu plus difficile de suggérer quelque chose ..
Mais je pense que vous recherchez p>
Query fort> p>
xxx pré> résultat fort> p> < Pré> xxx pré>
voir Démo P>
Assurez-vous à peu près que les optimiseurs modernes MySQL 5.7+ ont atténué en supprimant la sous-requête redondante et évitent la nécessité éventuelle dans la nécessité de faire la mise en matérialisation de la table livrée et d'exécuter ci-dessous comme une version plus optimisée. p>
xxx pré> blockQquote>
Quelle version mysql?
Mysql 5.7.17 x86
Veuillez fournir une table Créer un code ainsi que suffisamment d'insertion de lignes de données et de sortie attendue.
Apprendre à utiliser le groupe
par code> correctement seraient un bon départ. Quel est le but du groupe
par code> sans agrégation?