2015-04-02 7 views
0

En utilisant this SO answer J'ai créé la requête suivante:Comment convertir cette sous-requête dans une jointure?

select 
    created, property_id, requesting_user_id, type, response 
from 
    pdr t1 
where 
    t1.created = (
     select max(created) 
     from pdr t2 
     where t2.property_id = t1.property_id and t2.requesting_user_id = t1.requesting_user_id 
    ) 

Cela fonctionne comme un charme, mais maintenant je veux transformer ce (également suggéré dans la réponse que je SO lien ci-dessus) à une requête en utilisant une jointure . Alors je suis venu avec ceci:

select 
    created, property_id, requesting_user_id, type, response 
from 
    pdr t1 
inner join (
    select max(created) as created, property_id, requesting_user_id 
    from pdr 
    group by property_id, requesting_user_id 
) as t2 on t2.property_id = t1.property_id and t2.requesting_user_id = t1.requesting_user_id and t2.created = t1.created 

Malheureusement, cela renvoie une erreur en disant ambiguous column name: created. Donc je me suis trompé en mettant t1. ou t2. avant certaines des choses créées, mais ensuite je reçois toutes sortes d'erreurs de syntaxe, donc je suis un peu perdu ici.

Quelqu'un pourrait-il m'aider dans ce que je fais mal ici? Tous les conseils sont les bienvenus! Ps: Je suis actuellement en train de tester cela sur SQLite, mais à la fin cela devrait aussi fonctionner sur MySQL. S'il y a une différence, il serait bien sûr très intéressant de savoir aussi.

+1

essayer de sélectionner d'abord comme -> SELECT t1.created, t1.property_id, t1.requesting_user_id ... cela devrait fonctionner dans MySQL basé sur https://dev.mysql.com/doc/refman/5.1/fr/example-maximum-column-group-row. html –

+0

@AleksandarMiladinovic - C'était tout. Merci! Si vous ajoutez votre commentaire en réponse, je peux l'accepter. – kramer65

+0

De rien. Je suis heureux d'avoir pu aider :) –

Répondre