0
votes

Comment utiliser cette propriété de sous-requête dans une requête mysqli?

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 commentaires

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 correctement seraient un bon départ. Quel est le but du groupe par sans agrégation?


4 Réponses :


0
votes

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


1 commentaires

Hmmm. Cela redevient faux comme le résultat. :(



0
votes

Tout d'abord, vous devez d'abord trouver la dernière mise à jour de chaque émission: xxx

maintenant, vous trouvez les épisodes: xxx

maintenant l'épisode Info: xxx


0 commentaires

0
votes

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
                       )


0 commentaires

0
votes

qoute de la question

Voici les conditions que je veux:

  1. Je veux récupérer l'épisode, ou l'épisode est rejoint à la Asset.
  2. Je veux seulement récupérer l'épisode le plus récemment mis à jour par spectacle (show_id)
  3. Je veux récupérer 5 (ou x numéro) d'épisodes.

    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

    Query xxx

    résultat < Pré> xxx

    voir Démo

    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. xxx


0 commentaires