Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/07/2011, 11h42   #1
Invité de passage
 
Femme
Développeur Web
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 1
Points : 1
Par défaut La Requête Fonctionne mais pas son contraire @_@

Bonjour,

Tout d'abord un grand merci à ceux qui font ce forum, à ceux qui l'entretiennent et à ceux qui passent pour aider les autres....

Voilà mon problème, j'ai une requête ci-dessous qui fonctionne parfaitement

Code :
1
2
3
4
SELECT * 
FROM mesProduitsDeLaVeille N1 
LEFT JOIN mesProduitsDuJour N ON N1.id = N.id 
WHERE N.id IS NULL
Ce qui me donne en résultat les lignes de ma table de la veille qui ne sont plus dans ma table du jour (qui ont donc été supprimées).

J'aimerais faire le contraire, c'est à dire savoir quels produits sont dans ma table du jour mais ne sont pas dans ma table de la veille et donc en déduire les nouveaux produits (via leur id qui est unique > référence produit)

Par rapidité, je fait donc :
Code :
1
2
3
SELECT * 
FROM mesProduitsDuJour N 
LEFT JOIN mesProduitsDeLaVeille N1 ON N.id != N1.id
et là...
plantage phpMyAdmin, processus mysql : 99% de mon UC
je suis obligé (avec beaucoup de mal) de redémarrer les services de wamp (v2) afin que l'execution s'annule et que je puisse retravailler correctement...

MA CONFIG :
Windows 7 (32b) - LocalHost (wamp 2.0) - root
Version Serveur : 5.1.36 communitylog - UTF8 - root
Apache/2.2.11 - PHP/5.3.0 - extension musqli
Mysqlnd 5.0.5-dev 081106 $Revision : 1.3.2.27 $
phpMyAdmin version: 3.3.9

Voilà voilà
je pense avoir fait le tour en espérant que quelqu'un puisse m'aider sur cette requête...

Merci
ecnailof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 12h02   #2
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Saluton,
Tout d'abord j'espère que les hostilités de la guerre des étoiles ne sont pas ré-ouvertes par cette requête.
Ensuite, pourquoi ne pas simplement inverser, dans la 1ère requête, le LEFT JOIN par un RIGHT JOIN et tester la nullité WHERE N1.id IS NULL ?
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 12h13   #3
Invité de passage
 
Femme
Développeur Web
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 1
Points : 1
Par défaut Pas de guerre en vue

Merci pour cette suggestion, Je viens de tester ça avec :

Code :
1
2
3
4
SELECT * 
FROM mesProduitsDuJour N 
RIGHT JOIN mesProduitsDeLaVeille N1 ON N.id = N1.id 
WHERE N1.id IS NULL
La bonne nouvelle c'est que j'ai pas de plantage
La mauvaise c'est que je n'est pas de résultat retourné

Hors, en vérifiant à l'instant, j'ai bien un produit avec un id (707515) qui est dans mesProduitsDuJour mais pas dans mesProduitsDeLaVeille
(à vrai dire, j'en ai 3 pour mon test)

En ce qui concerne le '*' de mon SELECT
pour le coup il est vraiment utile (car ce n'est pas pour un site)
mais une mini application qui affiche les différences (ajoutés, supprimés, modifiés) entre 2 bases, et ce tous les jours.

Une intervention humaine est nécessaire derrière pour agir justement sur la base du site en fonction des résultats affichés de cette "appli" et la personne doit voir toutes les informations des produits trouvés, car parfois seul 1 colonne sur 25 a changé...

Merci de ta réponse
ecnailof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 12h20   #4
Invité de passage
 
Femme
Développeur Web
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 1
Points : 1
Je rajoute à cela que je viens de tester ceci :

Code :
1
2
3
4
SELECT * 
FROM mesProduitsDeLaVeille N1 
RIGHT JOIN mesProduitsDuJour N ON N1.id= N.id 
WHERE mesProduitsDeLaVeille.id IS NULL
(donc juste changer LEFT en RIGHT et mesProduitsDeLaVeille.id IS NULL par mesProduitsDuJour.id IS NULL)

et là, erreur mysql (très long) puis #2006 - MySQL server has gone away

Juste pour info...

PS : chaque base contient environ 12000 produits et 25 colonnes
ecnailof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 13h06   #5
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Citation:
Envoyé par ecnailof Voir le message
En ce qui concerne le '*' de mon SELECT
pour le coup il est vraiement utile (car ce n'est pas pour un site)
mais une mini application qui affiche les différences (ajoutés, supprimés, modifiés) entre 2 base, et ce tous les jours

une intervention humaine est nécessaire derrière pour agir justement sur la base du site en fonction des résultats affichés de cette "appli" et la personne doit voir toutes les informations des produits trouvés, car parfois seul 1 colonne sur 25 a
La jointure impliquant 2 tables, li y a toujours la possibilité que deux colonnes aient le même nom dans chacune des tables d'où un risque de confusion dans l'exploitation du résultat.

Pour en revenir à la problématique de départ
Code sql :
FROM mesProduitsDuJour N LEFT JOIN mesProduitsDeLaVeille N1 ON N.id = N1.id WHERE N1.id IS NULL
devrait convenir.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 13h39   #6
Invité de passage
 
Femme
Développeur Web
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 1
Points : 1
Re,

Je viens de retester cette requête,
Mais malheureusement, Mysql rame et après quelques longues minutes :
#2006 - MySQL server has gone away
ecnailof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 13h46   #7
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Quelle est la taille des tables (nb lignes) ?
Les colonnes mesProduitsDuJour.id et mesProduitsDeLaVeille.id sont-elles indexées ?
Et en remplaçant * juste par N1.id, pour voir si la requête charrie moins de données.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/07/2011, 14h52   #8
Invité de passage
 
Femme
Développeur Web
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 1
Points : 1
Comme cité précédemment :
12 076 lignes au total (du jour)
12 073 lignes au total (veille)

Effectivement,
Après vérification, la table du jour était indexée
mais pas la table de la veille

J'exécute ceci :

Code :
1
2
3
4
SELECT N1.id 
FROM mesProduitsDuJour.id N 
RIGHT JOIN mesProduitsDeLaVeille N1 ON N.id = N1.id 
WHERE N1.id IS NULL
Aucun Résultat
Pourtant des produits de mesProduitsDuJour ne sont bel et bien pas présents sur mesProduitsDeLaVeille

ecnailof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 15h14   #9
Invité de passage
 
Femme
Développeur Web
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 1
Points : 1
Par défaut Merci !

Tu m'as mis sur une piste et j'ai finalement la réponse...

Code :
1
2
3
4
SELECT * 
FROM mesProduitsDuJour N 
LEFT JOIN mesProduitsDeLaVeille N1 ON N.id = N1.id 
WHERE N1.id IS NULL
et là c'est ok, donc pourquoi l'erreur précédente ?
je pense à l'indexation de la seconde table qui ne l'était pas en explication...
et j'ai changé RIGHT en LEFT... (grosse incidence > pas sûr)

Miracle informatique ou justifié ? Explication ?
^_^

Merci en tout cas...
PUIS-JE ME PERMETTRE UNE AUTRE DEMANDE ?
ça serait de comparer les 2 tables (ou les stocker en tableaux PHP)
afin de ressortir uniquement les différences...

Merci en tout cas
ecnailof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 15h34   #10
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Saluton,
Qu'appelles-tu les différences ?
Les lignes qui sont dans l'une des tables seulement ou bien aussi les lignes présentes dans les deux tables mais pour des valeurs différentes dans les colonnes autres que l'identifiant ?
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 15h43   #11
Invité de passage
 
Femme
Développeur Web
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 1
Points : 1
Voilà c'est ça :

On a 2 tables avec tous les produits,
Je voudrais savoir sur ma table de la veille qu'est ce qui je dois changer par rapport à ma table du jour (ex le prix de la référence XXX à prix 1 €, la description de la référence YYY a été raccourcie, la puissance de ZZZ a été augmentée...

1ere étape serait d'afficher... bah...
ou les lignes de la table de la veille et juste en dessous les lignes de la table du jour
ou dans l'idéal du coup, mettre en "couleur" ou en avant uniquement les parties qui ont "changé"

Merci

PS : LE PROBLEME DE LA REQUETE VIENT DE REPLANTER
je m'explique : j'ai mis à jour, pour aujourd'hui, la base du jour des produits
ma table N est devenu N-1 et j'ai effacer ma N pour y insérer les données du jour avant le comparatif et là...
pour la même requête, tout plante (mysql 99% CPU...)
là, je sèche !
ecnailof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 15h50   #12
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Il n'y aurait pas comme un problème de conception (donc de modélisation) dans cette base de données ?

Par ailleurs quelle machine est support du serveur MySQL ? Elle est peut-être tout simplement sous-dimensionnée
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 15h56   #13
Invité de passage
 
Femme
Développeur Web
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 1
Points : 1
Je suis vraiment une *quiche* !
j'ai regardé à nouveau....
lors du transfert de N vers N-1, la table n'a plus d'index et de clé primaire
et donc ça plante...

Voilà j'ai remédié au problème à base de :
ALTER TABLE `mesProduitsDeLaVeille` ADD INDEX ( `art_id` )

au moment de la copie
et donc ça remarche...

ecnailof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 16h40   #14
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 008
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 008
Points : 18 279
Points : 18 279
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par ecnailof Voir le message
Voilà c'est ça :

On a 2 tables avec tous les produits,
Je voudrais savoir sur ma table de la veille qu'est ce qui je doit changé par rapport à ma table du jour (ex le prix de la reference XXX à prix 1 €, la description de la reference YYY a été raccourcie, la puissance de ZZZ à été augmentée...
En SQL, je verrais un truc comme ça, ce qui met fin à la guerre des étoiles !
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT 
    CASE
        WHEN N.colonne_1 <> N1.colonne_1 THEN 1
        ELSE 0
    END AS colonne_1_changee,
    N1.colonne_1 AS ancienne_colonne_1,
    N.colonne_1 AS nouvelle_colonne_1
    -- idem pour toutes les colonnes
FROM mesProduitsDuJour N 
INNER JOIN mesProduitsDeLaVeille N1 ON N.id = N1.id
WHERE N.colonne_1 <> N1.colonne_1
    OR N.colonne_2 <> N1.colonne_2
    -- etc pour toutes les colonnes
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/07/2011, 17h13   #15
Invité de passage
 
Femme
Développeur Web
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 1
Points : 1
Bonjour,

Merci pour cette requête qui me semble magnifique
mais je n'y comprends pas trop le sens (du moins la lecture)

Peut-être pour éclairer ma lanterne une "démo" de ma base serait la bienvenue

Concrètement,
je sélectionne 3 colonne (id, marque, prix)
car c'est là que j'ai fait mon test

REQUETE :

Code :
1
2
3
4
SELECT prods.art_id AS N_id, prods_n1.art_id AS N1_id, prods.marque AS N_marque, prods_n1.marque AS N1_marque, prods.prx_ht AS N_prixHT, prods_n1.prx_ht AS N1_prixHT
FROM `prods_n1`
LEFT JOIN `prods` ON prods_n1.art_id = prods.art_id
LIMIT 0 , 30
RESULTAT :
(photo ci-joint)

et donc il faut repérer par une requête SQL les lignes qui ont été modifiées
dans la base N (du jour) et qu'il faudra modifier dans la base N1 (de la veille)

ICI C'EST LA LIGNE 2 QUI DEVRAIT SORTIR EN RESULTAT

Merci encore de votre aide
ecnailof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 17h24   #16
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
cinephil te donne une requête qui teste la différence dans ta colonne_1 entre tes 2 tables grace à:
Code sql :
1
2
3
4
    CASE
        WHEN N.colonne_1 <> N1.colonne_1 THEN 1
        ELSE 0
    END AS colonne_1_changee

que tu peux aussi écrire:
Code sql :
 IF(N.colonne_1 <> N1.colonne_1,1,0) AS colonne_1_changee
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 17h36   #17
Invité de passage
 
Femme
Développeur Web
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 1
Points : 1
D'accord,

c'est un peu plus clair,
Mais ne restant pas sur ma faim j'ai exécuté :

Code :
1
2
3
4
5
6
SELECT N1.prx_ht AS ancienne_colonne_1, N.prx_ht AS nouvelle_colonne_1, N1.marque AS ancienne_colonne_1, N.marque AS nouvelle_colonne_1
FROM prods N
INNER JOIN prods_n1 N1 ON N.id = N1.id
WHERE N.prx_ht <> N1.prx_ht
OR N.marque <> N1.marque
LIMIT 0 , 30
et j'ai obtenu ceci : (ci-joint)

donc là, je me dis : quelle utilité de CASE > WHEN > END ?

Bien à vous
Images attachées
Type de fichier : jpg Capture-005.jpg (36,7 Ko, 1 affichages)
ecnailof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 20h51   #18
Invité de passage
 
Femme
Développeur Web
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 1
Points : 1
Ok,

à part l'explication
pour moi c'est clos.

Merci à tous !
ecnailof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 04h57   #19
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Citation:
Envoyé par ecnailof Voir le message
à part l'explication
pour moi c'est clos.
Explication de quoi ? On est passé de
Citation:
Envoyé par ecnailof Voir le message
comparer les 2 tables ...afin de ressortir uniquement les différences...
à sélectionner les colonnes prix et marque des lignes de deux tables en jointure sur leur id et pour lesquelles les valeurs d'une de ces deux colonnes sont différentes.
Du flou le plus total à un cahier des charges précis et restreint.
Comme dit mon maître Dédé :
Citation:
Bien poser le problème, c'est souvent le résoudre.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 12h46   #20
Invité de passage
 
Femme
Développeur Web
Inscription : juillet 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : juillet 2011
Messages : 13
Points : 1
Points : 1
Bonjour,

Non en fait on n'a pas "sauté" d'étapes,
Il y a eu cette proposition :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT 
    CASE
        WHEN N.colonne_1 <> N1.colonne_1 THEN 1
        ELSE 0
    END AS colonne_1_changee,
    N1.colonne_1 AS ancienne_colonne_1,
    N.colonne_1 AS nouvelle_colonne_1
    -- idem pour toutes les colonnes
FROM mesProduitsDuJour N 
INNER JOIN mesProduitsDeLaVeille N1 ON N.id = N1.id
WHERE N.colonne_1 <> N1.colonne_1
    OR N.colonne_2 <> N1.colonne_2
    -- etc pour toutes les colonnes
Après l'avoir comprise,
J'ai décidé (toujours pour comprendre) de faire la même requête
mais sans le CASE WHEN END
Ce qui a donné ceci

Code :
1
2
3
4
5
6
SELECT N1.prx_ht AS ancienne_colonne_1, N.prx_ht AS nouvelle_colonne_1, N1.marque AS ancienne_colonne_1, N.marque AS nouvelle_colonne_1
FROM prods N
INNER JOIN prods_n1 N1 ON N.id = N1.id
WHERE N.prx_ht <> N1.prx_ht
OR N.marque <> N1.marque
LIMIT 0 , 30
Là j'ai le même résultat sans la colonne 'colonne_1_changee' à 1 en valeur
Par contre, là je n'ai donc pas compris le pourquoi (enfin l'utilité / l'explication) de cette partie de la requête (afin d'une future utilisation)

Merci
ecnailof est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h25.


 
 
 
 
Partenaires

Hébergement Web