Problème de jointure entre deux tables requête SQL
7 messages
• Page 1 sur 1
-

julien__ - WRInaute occasionnel

- Messages: 362
- Inscription: 28 Déc 2006
Problème de jointure entre deux tables requête SQL
Bonjour, j'ai un problème pour une requête SQL avec une jointure. Je dois récupéré l'emplacement d'images sur une autre table. J'ai une référence de produit qui est dans la base1 base1.affiches qui se trouve être base2.urlaffiche dans l'autre table, et le colonne que je dois récupérer dans la base 2 est base2.urlimage
SELECT base1.id,base1.titre,base1.sortie1,base1.affiches,base2.urlimage FROM base1,base2 WHERE base1.sortie1a=EXTRACT(YEAR FROM NOW()) AND base1.sortie1m=(EXTRACT(MONTH FROM NOW())) AND base1.affiches = base2.urlaffiche ORDER BY sortie1a DESC,sortie1m DESC,sortie1j DESC LIMIT 6
Cette requête fonctionne, seulement elle me sort seulement les enregistrement de la base 1 qui ont une référence dans la base2, alors qu'il me faudrait une requête qui me trouve les enregistrement qui ont des références dans la base 2 mais aussi ceux de la base 1 qui n'en n'ont pas selon la requête WHERE base1.sortie1a=EXTRACT(YEAR FROM NOW()) AND base1.sortie1m=(EXTRACT(MONTH FROM NOW())) !
SELECT base1.id,base1.titre,base1.sortie1,base1.affiches,base2.urlimage FROM base1,base2 WHERE base1.sortie1a=EXTRACT(YEAR FROM NOW()) AND base1.sortie1m=(EXTRACT(MONTH FROM NOW())) AND base1.affiches = base2.urlaffiche ORDER BY sortie1a DESC,sortie1m DESC,sortie1j DESC LIMIT 6
Cette requête fonctionne, seulement elle me sort seulement les enregistrement de la base 1 qui ont une référence dans la base2, alors qu'il me faudrait une requête qui me trouve les enregistrement qui ont des références dans la base 2 mais aussi ceux de la base 1 qui n'en n'ont pas selon la requête WHERE base1.sortie1a=EXTRACT(YEAR FROM NOW()) AND base1.sortie1m=(EXTRACT(MONTH FROM NOW())) !
- silef
- WRInaute occasionnel

- Messages: 317
- Inscription: 13 Jan 2006
Re: Problème de jointure entre deux tables requête SQL
Tu devrais essayer un truc du genre :
- Code: Tout sélectionner
SELECT base1.id,base1.titre,base1.sortie1,base1.affiches,base2.urlimage
FROM base1
LEFT JOIN base2 ON base1.affiches = base2.urlaffiche
WHERE base1.sortie1a=EXTRACT(YEAR FROM NOW()) AND base1.sortie1m=(EXTRACT(MONTH FROM NOW())) ORDER BY sortie1a DESC,sortie1m DESC,sortie1j DESC LIMIT 6
-

Julia41 - WRInaute passionné

- Messages: 1765
- Inscription: 31 Aoû 2007
Re: Problème de jointure entre deux tables requête SQL
Rien à voir mais en passant :
à ta place je virerais les champs sortie1a et sortie1m pour un seul champs unique contenant "année + mois".
A la place de l'extract j'utiliserais aussi la fonction date() de PHP ou alors un LTRIM.
Edit: ou alors les :
à ta place je virerais les champs sortie1a et sortie1m pour un seul champs unique contenant "année + mois".
A la place de l'extract j'utiliserais aussi la fonction date() de PHP ou alors un LTRIM.
Edit: ou alors les :
- Code: Tout sélectionner
SELECT MONTH(NOW());
SELECT YEAR(NOW());
-

julien__ - WRInaute occasionnel

- Messages: 362
- Inscription: 28 Déc 2006
Re: Problème de jointure entre deux tables requête SQL
Julia41 a écrit:Rien à voir mais en passant :
à ta place je virerais les champs sortie1a et sortie1m pour un seul champs unique contenant "année + mois".
A la place de l'extract j'utiliserais aussi la fonction date() de PHP ou alors un LTRIM.
Edit: ou alors les :
- Code: Tout sélectionner
SELECT MONTH(NOW());
SELECT YEAR(NOW());
le champ avec la date entière je l'ai déjà dans ma base, mais le drame c'est qu'elle n'est pas au format date mysql, mais c'est un champ TEXT
Il faut que je fasse la transformation, mais prudente
-

Julia41 - WRInaute passionné

- Messages: 1765
- Inscription: 31 Aoû 2007
Re: Problème de jointure entre deux tables requête SQL
julien__ a écrit:le champ avec la date entière je l'ai déjà dans ma base, mais le drame c'est qu'elle n'est pas au format date mysql, mais c'est un champ TEXT
Il faut que je fasse la transformation, mais prudenteavec un champ provisoire et surtout bien contrôler l'intégrité des données après le changement avant de basculer... Dans mon champ date au format texte j'ai de tout, des dates où il y a que l'année, année + mois ou année moi jour... je ne veux surtout pas bousiller mes dates...
Je pense que tu gagnerais pas mal avec un champ INT(6) style YYYYMM.
Ca ferait des bonnes perfs et ça conservait les classements.
Pour ne rien perdre il faudra créer un champs temporaire le temps que tu majs tes scripts mais après ça devrait aller vite.
7 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Problème avec requête SQL multiple (3 tables) et comptage
- Requete SQL sur 2 tables
- [Résolu] PB requete SQL 3 tables + 2 count
- SQL Requête dans plusieurs tables
- Requête SQL pour connexion entre 3 tables liées..
- Jointure sql problème inner join
- JOINTURE SQL: problème de doublon
- Requete de classement SQL sur trois tables avec SUM, COUNT..
- jointure de deux tables qui ne marche pas
- Requête sur deux tables problème champ / chaine
- Google API : guide de développement de l'API Google
- AdSense Tracking : statistiques détaillées sur les clics AdSense
- Nombre moyen de mots par requête : statistiques AOL Août 2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006
- Informations sur l'infrastructure technique de Google
- Google indexe le Flash
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités
