La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  PHP / MySQL
(Modérateurs: Shain, Jey, erwinol, Lilian, lauryv, ToToMaStEr)
  debutant MySQL cherche aide pour requette inefficasse
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: debutant MySQL cherche aide pour requette inefficasse  (Lu 513 fois)
debutant MySQL cherche aide pour requette inefficasse
« sur: le 17-10-2003 a 10:11:53 »
arclune
Membre récent
*

Hors-Ligne

Sexe: Male
Messages: 2





Voir le Profil    E-Mail
Répondre avec citation

J'ai un probleme dans une table type:

NOMTABLE
--------------------
NOMELEMENT
CARACTERISTIQ
...
avec par exemple deux entrée dans la table (ou plusieurs):

NOMTABLE                      et            NOMTABLE
-------------------                              ----------------
ELEMENT-1                                    ELEMENT-1
CARAC-1                                        CARAC-2

si je fais :

SELECT NOMELEMENT FROM NOMTABLE WHERE CARACTERISTIQ='CARAC-1' AND CARACTERISTIQ='CARAC-2';

la requette s'execute correctement (pas d'erreures) mais ne renvoie rien, alors que je voudrais qu'elle me renvoie "ELEMENT-1"


COMMENT faire, je m'arrache déjà pas mal de cheveux, mais j'ai des lacunes en syntaxe MySQL,

quelqu'un peut-il venir à mon secours???

Merci.

Arclune.

Rapporter au modérateur  

Re:debutant MySQL cherche aide pour requette inefficasse
« Répondre #1 sur: le 18-10-2003 a 10:33:19 »
Jey
Modérateur
Equipe de modération
Habitué
*****

Hors-Ligne

Sexe: Male
Messages: 466



:)

Voir le Profil    WWW
Répondre avec citation

il y a une sorte de probleme de logique dans ta requete...
par exemple, si tu luis demande WHERE CARACTERISTIQ='CARAC-1', il va trouver ELEMENT-1
et si tu lui demandes WHERE CARACTERISTIQ='CARAC-2', il va aussi trouver ELEMENT-1
mais si tu demandes les 2 en meme temps, ça ne peut pas aller puisque si  CARACTERISTIQ='CARAC-1' alors CARACTERISTIQne peut pas etre égal ) à 'CARAC-2'

(je suis pas sur d'etre tres clair...)

essaye de mettre un OR à la place du AND...
peut etre que tu obtiendras les résultats que tu veux...

Rapporter au modérateur  

Toute l'actu  ||  Régie Pub Innovante  ||  Chat !! || La vie d'un gars qui est bien quand même :p
Re:debutant MySQL cherche aide pour requette inefficasse
« Répondre #2 sur: le 18-10-2003 a 15:00:48 »
erwinol
Iznogoud Deluxe
Modérateur Global
*****

Hors-Ligne

Sexe: Male
Messages: 1845



Que la FARCE soit avec toi

Voir le Profil    WWW
Répondre avec citation

Oui c'est bien ça l'erreur

C'est logique. Avec ta requete tu demandes de renvoyer les tuples ou tu as car1 ET car2 alors que tu as besoin de tous les tuples ou tu as car1 OU car2.

« Dernière Édition: le 18-10-2003 a 15:02:45 par erwinol » Rapporter au modérateur  

MySeoBox soumet vos sites sur des milliers d'annuaire
Vous possédez un annuaire ? Gagnez de l'argent avec celui-ci grâce à l'affiliation MySeoBox !
Re:debutant MySQL cherche aide pour requette inefficasse
« Répondre #3 sur: le 19-10-2003 a 05:18:50 »
arclune
Membre récent
*

Hors-Ligne

Sexe: Male
Messages: 2





Voir le Profil    E-Mail
Répondre avec citation

Avec le OU j'ai bien tout les tuples; mais j'ai ceux qui ont soit CAR-1 soit CAR-2; alors que je veux ceux qui ont les deux (voir les trois par extention...)

si  entrée 1:
ELEM-1(clé)
CARAC-1(clé)

entrée 2:
ELEM-1(clé)
CARAC-2(clé)

entrée 3:
ELEM-2(clé)
CARAC-1(clé)

le OR me renvoi ELEM-1, ELEM-1, ELEM-2

alors que je veux ELEM-1
(ou ELEM-1,ELEM-1 je m'arrange après avec GROUP)

J'ai bien peur que ma base soit légèrement inutilisable pour cette requette mais j'en ai besoin pour d'autre qui fonctionnent très bien...

Il y til une issue...???

PS pour Jey: si si c très clair mais je ne vois pas comment contourner le problèmes...

Rapporter au modérateur  
Re:debutant MySQL cherche aide pour requette inefficasse
« Répondre #4 sur: le 20-10-2003 a 13:09:53 »
erwinol
Iznogoud Deluxe
Modérateur Global
*****

Hors-Ligne

Sexe: Male
Messages: 1845



Que la FARCE soit avec toi

Voir le Profil    WWW
Répondre avec citation

Bon là on va dans Sub-Selects avec la clause EXISTS qui ne sont pas supportées dans mySQL pour le moment ... à moins qu'il y ai une autre solution.

Oubien il y a une solution plus performante qui est de dédoubler la table mais je suis pas sûr que ça fonctionne. Mais pour ça il faut avoir un champs identificateur autoincrémenté (apellé id dans mon exemple)

[CODE]
SELECT noelem
FROM matable T1, matable T2
WHERE T1.caracteristiq = carac-1
            AND T2.caracteristiq = carac-2
            AND T1.id = T2.id
[/CODE]

FROM matable T1, matable T2
on dédouble la table pour pouvoir faire les 2 conditions sur un même tuple

T1.id = T2.id
ça c'est pour éviter d'avoir le produit cartésien qui va multiplier les tuples renvoyés.
c'est en fait cette condition qui permet de faire les conditions sur le même tuple, les identificateurs doivent être les mêmes (=> même tuple) et les conditions sont faites sur les 2 tables.

Je suis pas sûr que ça marcherait mais normalement oui.

Rapporter au modérateur  

MySeoBox soumet vos sites sur des milliers d'annuaire
Vous possédez un annuaire ? Gagnez de l'argent avec celui-ci grâce à l'affiliation MySeoBox !
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
Pages: [1] Monter
« Précédent Suivant »
Sauter à: 

Votre statut : Invité
Vous devez être membre pour participer.
 
 
Let’s Encrypt : le certificat SSL gratuit
Tester votre site internet sur différents navigateurs
[WordPress] Des problèmes avec l’administration ?
Rappel : Mettez à jour vos CMS et vos sites E-commerce
Le .fr fête ses 25 années d’existence !
Mesurer votre audience en temps réel avec BubbleStat
Porter réclamation contre Google Panda ?
Zlio n’est plus …
 
 
 
 
 

Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

creation site internet strasbourg