PRobleme SQL imbriquée

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : PRobleme SQL imbriquée

Re: PRobleme SQL imbriquée

par torn33260 » 06 janv. 2012, 12:16

Bonjour, visiblement il falait simplement rajouter le nom de la table dans la seconde requête :
$query17 = "SELECT * FROM `ex_mycontest` ,`ex_vote` 
WHERE `ex_mycontest`.`ex_myc_validation` = '1'
AND `ex_mycontest`.`ex_myc_proprietaire` <> '" . $_SESSION['id'] . "'
AND `ex_mycontest`.`ex_myc_actif` = '1'
AND `ex_mycontest`.`ex_myc_datetime` > '" . time() . "'  					
AND `ex_mycontest`.`ex_myc_multiple` > (SELECT COUNT(*)  FROM [b]`ex_mycontest`[/b] , `ex_vote` WHERE `ex_vi_contest`= `ex_myc_id` AND ex_vi_votant='" . $_SESSION['id'] . "' AND ex_vi_etat ='1' OR ex_vi_etat ='2')
ORDER BY `ex_mycontest`.`ex_myc_id` DESC 
LIMIT 20"; 
merci et bonne journée

Re: PRobleme SQL imbriquée

par Shenryu » 06 janv. 2012, 11:36

Salut,

Oui il ne connaît pas la valeur de `ex_mycontest`.`ex_myc_id` car ex_mycontest n'est pas dans ta seconde requête. Il faut que tu fasses une jointure sur cette table dans ta requête également.

Essaye tout d'abord de faire fonctionner ta sous-requête plutôt que directement l'ensemble, ce sera plus simple à débugguer ;)

PRobleme SQL imbriquée

par torn33260 » 05 janv. 2012, 22:04

Bonjour, pour mon petit site amateur j'ai besoin de faire une requête sql imbriquand une autre requête. J'ai fais ca
SELECT * FROM `ex_mycontest`,`ex_vote` 
WHERE `ex_mycontest`.`ex_myc_validation` = '1'
AND `ex_mycontest`.`ex_myc_proprietaire` <> '" . $_SESSION['id'] . "'
AND `ex_mycontest`.`ex_myc_actif` = '1'
AND `ex_mycontest`.`ex_myc_datetime` > '" . time() . "'  					
AND `ex_mycontest`.`ex_myc_multiple` > (SELECT COUNT(*)  FROM `ex_vote` WHERE `ex_vi_contest`='`ex_mycontest`.`ex_myc_id`' AND ex_vi_votant='" . $_SESSION['id'] . "' AND ex_vi_etat ='1' OR ex_vi_etat ='2')
ORDER BY `ex_mycontest`.`ex_myc_id` DESC 
LIMIT 20;
et voila le résultat si je le print
SELECT * FROM `ex_mycontest`,`ex_vote` 
WHERE `ex_mycontest`.`ex_myc_validation` = '1' 
AND `ex_mycontest`.`ex_myc_proprietaire` <> '1' 
AND `ex_mycontest`.`ex_myc_actif` = '1' 
AND `ex_mycontest`.`ex_myc_datetime` > '1325789742' 
AND `ex_mycontest`.`ex_myc_multiple` > (SELECT COUNT(*) FROM `ex_vote` WHERE `ex_vi_contest`='`ex_mycontest`.`ex_myc_id`' AND ex_vi_votant='1' AND ex_vi_etat ='1' OR ex_vi_etat ='2') 
ORDER BY `ex_mycontest`.`ex_myc_id` DESC 
LIMIT 20;
visiblement tout marche sauf '`ex_mycontest`.`ex_myc_id`' ligne 7 ... En mettant en dur une valeur (ex : 10) ma requete s'execute correctement et tout marche hors '`ex_mycontest`.`ex_myc_id`' ne se converti pas en '10'.

Comment faire pour donner le chiffre dans la deuxieme requête?

merci de votre aide