begin process at 2012 05 31 02:18:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Bases de données

 > 

Problème de requête de non-correspondance


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de requête de non-correspondance

mercredi 5 janvier 2005 à 19:10:27 | Problème de requête de non-correspondance

dphil94

Bonjour a tous...
 Voici mon problème ;
J'ai 2 tables
table1 "qcm_sujet" avec les champs id, sujet, ....
table2 "qcm_score" avec les champs id, sujet, nom, ....

Je souhaite afficher dans une liste les sujets de la table1 qui ne sont pas saisie dans la table2 pour un nom données (saisie dans un formulaire) :

Voici ce que j'arrive à faire sous Access et que je voudrais transposer en PHP et MySQL :

Première requête (qcm_score_requete) :
SELECT qcm_score.id, qcm_score.sujet, qcm_score.nom
FROM qcm_score
WHERE (((qcm_score.nom)=[entrez un nom]));

Deuxième requête :
SELECT qcm_sujet.id, qcm_sujet.sujet, qcm_sujet.description
FROM qcm_sujet LEFT JOIN qcm_score_requete ON qcm_sujet.sujet = qcm_score_requete.sujet
WHERE (((qcm_score_requete.sujet) Is Null));

 Quelqu'un pourrait il m'aider à transposer ces deux requêtes en une réquête utilisable en PHP ?
 
 merci d'avance
jeudi 6 janvier 2005 à 16:39:55 | Re : Problème de requête de non-correspondance

krevette

essai mais je pense que ca devrais fonctionner

je ne comprends pas pourquoi tu fais deux requete alors qu'avec une ca devrais fonctionner ou alors il y a des infos spéciale dans une table que n'a pas donné

$sql="SELECT q.id as idSujet, s.id, s.sujet, s.nom FROM qcm_score s, qcm_sujet q WHERE
q.sujet = s.sujet AND s.nom='$entrerlenom';"
et maintenant tu peux exécuté le requete et voir le résultat


si ca ne fonctionne pas n'hesite pas a expliquer d'avantage

krevette ;-)
jeudi 6 janvier 2005 à 18:16:51 | Re : Problème de requête de non-correspondance

dphil94

Je ne souhaite pas faire deux requêtes, pour être plus claire
La table qcm_sujet me fournit la liste de sujet par exemple :
id      sujet
0001 Questionnaire n°1
0002 Questionnaire n°2
0003 Questionnaire n°3
0004 ...

La table qcm_score garde en mémoire les noms des participants, le score qu'ils ont obtenu pour un QCM, le nom du QCM auquel ils ont participé, par exemple :
id      nom      sujet                      score
0001 Dupont Questionnaire n°1      10
0002 Durant  Questionnaire n°1        9
0003 Durant  Questionnaire n°2        5
0004 Garcias Questionnaire n°3        8
...

Les participants sont identifiés par une session. Je voudrais que lorsqu'un participant sélectionne un sujet dans la table qcm_sujet, Le résultat de la requête n'affiche que les sujets auxquel il n'a pas participé, par exemple :

Pour Dupont, la liste n'afficherait pas le Questionnaire n°1 ;
Pour Durant, la liste n'afficherait pas les Questionnaire n°1 et 2 ;
Pour Garcias, la liste n'afficherait pas le Questionnaire n°3.

D'ou ma requête de non-correspondance
vendredi 7 janvier 2005 à 09:58:54 | Re : Problème de requête de non-correspondance

krevette

ah ok j'avais bien fais gaffe au LEFT JOIN

ben a ce moment la je pense qu'il suffit de faire comme ca

$sql="SELECT q.id as idSujet, s.id, s.sujet, s.nom FROM qcm_score s, qcm_sujet q WHERE q.sujet != s.sujet AND s.nom='$entrerlenom';"

si ca marche pas mysql accépte les requette imbriquer depuis ca version 4.1

SELECT s.id, s.sujet FROM qcm_sujet s, WHERE 
s.nom='$entrerlenom' AND s.nom NOT IN (SELECT sujet FROM qcm_score q
WHERE q.nom=
'$entrerlenom');
si ca ne marche toujours pas (mysql version inférieur a 4.1) il faudra séparer les deux requetes
executer celle ci
SELECT sujet FROM qcm_score q
WHERE q.nom=
'$entrerlenom'
créer un liste des sujet de la forme $listeSujet="'sujet1', 'sujet2', 'sujet3'";

SELECT s.id, s.sujet FROM qcm_sujet s, WHERE 
s.nom='$entrerlenom' AND s.nom NOT IN ($listeSujet
);
voila j'espérer que l'une des solutions fonctionnera

krevette ;-)
samedi 8 janvier 2005 à 13:00:39 | Re : Problème de requête de non-correspondance

dphil94

Merci à krevette, j'ai essayé toutes tes requêtes mais aucune ne correspond à ce que je voulais. J'ai cependant trouver une solution. Voila comment j'ai procèdé des fois que cela serve à quelqu'un :

J'ai créé une table supplémentaire qcm_score_nom avec uniquement le champs sujet.
J'utilise une requête d'extraction qui m'alimente cette table :
SELECT * FROM qcm_score WHERE nom = '$nom'
J'insère dans la table qcm_score_nom le résultat de cette requête :
INSERT INTO qcm_score_nom(sujet) VALUES('$sujet')
Il me reste ensuite plus qu'a faire ma requête de nom correspondance avec les tables qcm_sujet et qcm_score_nom :
SELECT qcm_sujet.id, qcm_sujet.sujet, qcm_sujet.description FROM qcm_sujet LEFT JOIN qcm_score_nom ON qcm_sujet.sujet = qcm_score_nom.sujet WHERE qcm_score_nom.sujet Is Null"
Cette requête m'affiche la liste des sujets que la personne n'a pas encore réalisé.
Pour finir j'efface les enregistrements de la table qcm_score_nom :
DELETE FROM qcm_score_nom
Le seul problème qu'il peut y avoir, c'est l'utilisation simultané par plusieurs utilisateurs, cependant l'utlisation étant limité à quelques postes et sur un réseau intranet il n'y a pas de grands risques. Toute fois si quelqu'un à une solution, je suis preneur.


Cette discussion est classée dans : requête, id, sujet, score, qcm


Répondre à ce message

Sujets en rapport avec ce message

Requête PHP Mysql [ par nino69 ] Bonjour, j'ai 3 tables: jet_clients, clients_albums et album Note importante la table clients_albums à les deux clés etrangères des deux autre tables. Somme, valeur unique depuis requête [ par ltab ] Bonjour,Je cherche en vain depuis des lustres à faire l'addition de champs provenant d'une requête$sql = "select appartement FROM chambres WHERE id = affichage d'une requête comportant de deux autres requêtes [ par vir76 ] Je dispose de 3 requêtes :la 1ère :$requête fournitures="SELECT T_ANNEE.ANNEE_ANNEE, T_SOUSDIRECTION.ID_SOUSDIRECTION, T_SOUSDIRECTION.SOUSDIRECTION_N requête maitre/détail et php [ par ejmana ] BonjourVoilà mon soucis: je dispose de 2 tables, une contenant un article, avec différentes données, et une contenant les auteurs.Dans la table articl Liens entre 2 tables [ par patrickrgn ] Bonjour,J'ai une base de données avec plusieurs tables et je cherche à faire le lien entre la table sujet (id_sujet, nom_sujet, auteur_sujet, id_forum Problème de requête UPDATE [ par steppenwolf ] Salut !J'ai un petit souci de requête SQL et en particulier avec la requête UPDATE.Je cherche à mettre un jour un enregistrement dans une table (news) Requête SQL ne marche pas [ par OneHacker ] Alors j'ai une table Test avec un champ id(int) et un champ value(car char)voici ma table :0   value01   value1Je fait une requête : // pensez a ouvr histoire de scores [ par Mastersam ] Bonjour tout le monde, j'ai un soucis assez particulier mais je pense qu'il doit y avoir une solution.J'ai ma table 'score' avec les champs :ID, membr requête count [ par Tomcube ] Salut !J'ai une table news avec mes news, une table commentaires où sont stockés les commentaires de ces news. Dans ma page de news (qui en affiche 30 requête insert [ par youzou ] Bonjour j'ai une requête insert:$reqexp=" insert into avoir(id_materiel,id_prop,valeur)values('$codemat','$idsysexpl','$exploi');";$resexp = mysql_que


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales