Vous n'êtes pas identifié(e).
Pages :: 1
bonjour,
j'ai ce select
ce que je veux, c'est ramener les petition.nom de la table petition qui n'ont pas été signée par verif_petition.signataire
le problème de ce select, c'est qu'il marche uniquement si une autre personne a déjà signé la pétition, en fait, si l'id_petition existe dans verif_petition
ce que je veux c'est
verif.petition existe dans cette table ET verif.signataire != celui-que-je-test ==>on affiche petition.nom
verif.petition n'existe pas dans cette table => on affiche petition.nom
cela ne doit pas être compliqué mais trop longtemps dessus, je ne vois plus
Hors ligne
>>cela ne doit pas être compliqué
je suis d'accord avec toi
a++
Hors ligne
très drole !!!
Hors ligne
bah non, c'est pas drôle
a++
Hors ligne
Saluton,
En effet rien d'hilarant.
J'ai rendu ta requête plus lisible et conforme à la syntaxe SQL officielle.
Regarde du côté de LEFT JOIN.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
je ne comprends vraiment pas : j'ai vraiment du mal avec les tables imbriquées
je tourne en rond depuis ce matin, au mieux, j'en suis la
j'ai testé LEFT JOIN au lieu de INNER JOIN et j'ai le même souci. j'ai ajouté OR verif_petition.id_petition = '' mais cela ne change rien
==> j'ai l'affichage que si verif_petition.id_petition existe
j'ai toujours la solution de faire select nom from petition, il renvoie tout et je trie ensuite avec if mais cela va allourdir
Hors ligne
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
merci, cela fonctionne
Hors ligne
en fait, cela ne fonctionne pas
en local, je n'avait qu'une seule participation, par contre, en réelle, j'ai quelques milliers par pétitions, et la, bug car il affiche le nom de la pétition à chaque fois qu'il la rencontre : donc, des milliers de fois (bon, je l'ai arreté avant !!)
j'ai essayé
mais cela ne change rien.
en fait, ce que je croyais simple ne semble pas l'être
Hors ligne
hum vire le id_signataire de la requete (pas besoin et c'est ça qui met le brin tu récupère toute les signatures la
si tu nous montrez les create tables des deux tables et un exemple de jeux de données ça pourrait aider (psa plus d'une vingtaine de donnée hein);
ps : pour le code SQL le bbcode c'est [ code=sql ]
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
ma nouvelle requete qui ne marche toujours pas
ma table petition
table signataires
table verfi pétition
CREATE TABLE `verif_petition` (
`id_verif` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`id_petition` mediumint(8) UNSIGNED NOT NULL,
`id_signataire` BIGINT(20) UNSIGNED DEFAULT NULL,
`date` datetime DEFAULT NULL,
`enligne` VARCHAR(3) COLLATE latin1_bin NOT NULL,
`codevalid` VARCHAR(20) COLLATE latin1_bin NOT NULL,
`relance` VARCHAR(2) COLLATE latin1_bin NOT NULL,
`sujetmail` VARCHAR(255) COLLATE latin1_bin NOT NULL,
`txtlettre` mediumtext COLLATE latin1_bin NOT NULL,
`melelus` text COLLATE latin1_bin NOT NULL,
PRIMARY KEY (`id_verif`),
KEY `id_signataire` (`id_signataire`)
) ENGINE=MyISAM AUTO_INCREMENT=1218599 DEFAULT CHARSET=latin1 COLLATE=latin1_bin AUTO_INCREMENT=1218599 ;
--
-- Contenu de la table `verif_petition`
--
INSERT INTO `verif_petition` VALUES (855984, 66, 18917, '2010-03-10 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (892067, 76, 5, '2010-04-15 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (797940, 40, 19746, '2010-02-05 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (1448, 8, 1443, '2009-12-30 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (1449, 7, 1443, '2009-12-30 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (806300, 40, 22620, '2010-02-11 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (797800, 4, 6314, '2010-02-04 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (855983, 66, 11319, '2010-03-10 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (1456, 21, 1443, '2009-12-30 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (798014, 40, 19776, '2010-02-06 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (1554, 29, 860, '2009-12-30 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (1557, 21, 860, '2009-12-30 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (1560, 31, 860, '2009-12-30 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (855979, 67, 31828, '2010-03-10 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (1628, 31, 1558, '2009-12-30 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (1657, 32, 1588, '2009-12-30 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (1660, 21, 1588, '2009-12-30 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (892066, 85, 5, '2010-04-15 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (855976, 66, 31828, '2010-03-10 00:00:00', '', '', '', '', '', '');
INSERT INTO `verif_petition` VALUES (1829, 4, 1228, '2009-12-30 00:00:00', '', '', '', '', '', '');
j'espere que je n'ai pas posté trop d'infos dans le forum, j'aurais peut-être du mettre sur le wall ?
Hors ligne
Bon, pour pas trop importuner sur ce forum, en attendant, j'ai fait autre chose
si la première solution est faisable, cela ne serait pas plus mal, mais en attendant ....
Hors ligne
SELECT DISTINCT peut être ??
a++
Hors ligne
hum j'ai trouver une solution (enfin chez lmoli ça marche ) MK nous dira surement si c'est "propre" ;
voila
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
Voilà un GROUP BY bien peu orthodoxe et une sous-requête gourmande en ressources bien inutile selon moi.
Le filtre sur id_signataire<>860 faisant partie des conditions de la jointure autant l'y intégrer.
Le DISTINCT du SELECT est le seul à pouvoir supprimer les doublons sur les lignes (n-uplets) considérées sur l'ensemble de leur colonnes, ce qui constitue la seule manière logique de conserver l'intégrité référentielle entre celles-ci, le GROUP BY opérant une sélection aléatoire.
N'oubliez pas que les lignes insérées (INSERT) dans une table doivent être considérées comme des billes mises dans un sac, seuls les INDEX ou les ORDER BY permettent de les en extraire selon un ordre déterminé, le GROUP BY non.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Pages :: 1