probleme avec un JOIN

Toutes les questions et les aides qui concernent le langage PHP
kaelkaelkael
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 59
Enregistré le: Ven Juil 18, 2008 9:26 pm

probleme avec un JOIN

Messagepar kaelkaelkael le Sam Déc 12, 2009 2:56 pm

Bonjour,

je cherche a utiliser une jointure pour afficher une liste de résultat.
Il n'y a q'une partie qui fonctionne.

voici donc le code que moi j'ai fais:

Code: Tout sélectionner
<?php

if($_SESSION['rang'] != "b"){ 

header('Location: /annonceurs.php');
exit();
}
else {

$sql25289 "select oemp_campaigns_statistics.TotalRecipients, oemp_campaigns_statistics.SentRecipients, oemp_campaigns_statistics.FailedRecipients, oemp_campaigns_statistics.SendStartDateTime, oemp_campaigns.CampaignName, oemp_campaigns.idannonceur FROM oemp_campaigns_statistics LEFT JOIN oemp_campaigns ON oemp_campaigns_statistics.SentRecipients=oemp_campaigns.idannonceur where oemp_campaigns_statistics.idannonceur2='".$_SESSION['id']."'";
$req25289 mysql_query($sql25289) or die('Erreur SQL !<br>'.$sql25289.'<br>'.mysql_error());
while (
$data25289 mysql_fetch_assoc($req25289)){

echo 
'
<tr>
<td>nomcampagne: '
.$data25289['CampaignName'].'</td>
</tr>

<tr>
<td>Re&cced;us: '
.$data25289['TotalRecipients'].'</td>
</tr>

<tr>
<td>Envoyés: '
.$data25289['SentRecipients'].'</td>
</tr>

<tr>
<td>Erreurs: '
.$data25289['FailedRecipients'].'</td>
</tr>

<tr>
<td>date d envoi: '
.$data25289['SendStartDateTime'].'</td>
</tr>

<tr>
<td height="30">
</tr>
'
;

}
}

?>


et voici ce que ça m'affiche:

nomcampagne:
Re&cced;us: 1
Envoy�s: 1
Erreurs: 0
date d envoi: 2009-12-10 23:32:07

nomcampagne:
Re&cced;us: 1
Envoy�s: 1
Erreurs: 0
date d envoi: 2009-12-10 23:26:31

nomcampagne:
Re&cced;us: 2
Envoy�s: 2
Erreurs: 0
date d envoi: 2009-12-11 20:22:51

le nom de la campagne se trouve dans la table oem_campaign, et tout le reste dans la table oem_campaigns statistics.
je n'arrive pas a faire afficher le nom de la campagne.

Merci d'avance.

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Re: probleme avec un JOIN

Messagepar Yoyo le Dim Déc 13, 2009 12:35 am

salut, c'est normal que tu fasses un left join au fait ? Je pourrais voir la structure de tes 2 tables plz ? :) Les clés primaires, étrangères, etc. Merci :)

Fais juste un export de tes 2 tables sans les données, ca suffira ^^

et pour tester si les résultats d'une requête sont ceux attendus, test la d'abord correctement dans phpMyAdmin par exemple. Ensuite insère la dans ton code php. Mais pas d'abord travailler en php sans être sur que la requête est correcte :)
Vive les tutomakers ;)

kaelkaelkael
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 59
Enregistré le: Ven Juil 18, 2008 9:26 pm

Re: probleme avec un JOIN

Messagepar kaelkaelkael le Dim Déc 13, 2009 11:31 am

Donc voici les structures de ms tables:

Structure de la table `oemp_campaigns`
--

CREATE TABLE `oemp_campaigns` (
`CampaignID` int(11) NOT NULL auto_increment,
`RelAdministratorID` int(11) NOT NULL default '0',
`Status` enum('Draft','Active') NOT NULL default 'Draft',
`IntegrityCheck` enum('Not ready','Ready') NOT NULL default 'Not ready',
`IntegrityLastStep` int(11) NOT NULL default '0',
`CampaignName` text NOT NULL,
`CampaignType` enum('Quick Campaign','Newsletter Template Based Campaign') NOT NULL default 'Quick Campaign',
`RelFromEmailID` int(11) NOT NULL default '0',
`FromEmailIDType` enum('Administrator','MailList') NOT NULL default 'Administrator',
`RelReplyToEmailID` int(11) NOT NULL default '0',
`ReplyToEmailIDType` enum('Administrator','MailList') NOT NULL default 'Administrator',
`RelReturnPathEmailID` int(11) NOT NULL default '0',
`ReturnPathEmailIDType` enum('Administrator','MailList') NOT NULL default 'Administrator',
`SendEngine` enum('SMTP','MTA','QMail','Sendmail','SaveAsFile') NOT NULL default 'SMTP',
`SendReportToAdmin` enum('Yes','No') NOT NULL default 'Yes',
`SendReportToClients` enum('Yes','No') NOT NULL default 'Yes',
`idannonceur` int(11) NOT NULL,
PRIMARY KEY (`CampaignID`),
KEY `RelAdministratorID` (`RelAdministratorID`),
KEY `RelFromEmailID` (`RelFromEmailID`,`RelReplyToEmailID`,`RelReturnPathEmailID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;



Structure de la table `oemp_campaigns_statistics`
--

CREATE TABLE `oemp_campaigns_statistics` (
`CampaignStatisticsID` int(11) NOT NULL auto_increment,
`RelCampaignID` int(11) NOT NULL default '0',
`Status` enum('Pending','Preparing','Sending','Paused','Failed','Halted','Completed','Cancelled','Stopped') NOT NULL default 'Pending',
`StatusDescription` text NOT NULL,
`TotalRecipients` int(11) NOT NULL default '0',
`SentRecipients` int(11) NOT NULL default '0',
`FailedRecipients` int(11) NOT NULL default '0',
`SendStartDateTime` datetime NOT NULL default '0000-00-00 00:00:00',
`SendFinishDateTime` datetime NOT NULL default '0000-00-00 00:00:00',
`SendLastActionDateTime` datetime NOT NULL default '0000-00-00 00:00:00',
`InstantEmailsPerSecond` double NOT NULL default '0',
`AverageEmailsPerSecond` double NOT NULL default '0',
`TotalSentEmailSizeBytes` int(11) NOT NULL default '0',
`QueuePointer` int(11) NOT NULL default '0',
`QueuePointerOutsource` int(11) NOT NULL default '0',
`QueuePointerRelOutsourcedMailListID` int(11) NOT NULL default '0',
`idannonceur2` int(11) NOT NULL,
`nomcampagne` varchar(11) NOT NULL,
PRIMARY KEY (`CampaignStatisticsID`),
KEY `ReLCampaignID` (`RelCampaignID`),
KEY `QueuePointerRelOutsourcedMailListID` (`QueuePointerRelOutsourcedMailListID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Re: probleme avec un JOIN

Messagepar Yoyo le Dim Déc 13, 2009 9:37 pm

Salut, alors moi déjà j'inverserais l'ordre des tables car on veut lister les compagnes quoi qu'il arrive, donc mettre

Code: Tout sélectionner
FROM oemp_campaigns LEFT JOIN  oemp_campaigns_statistics ON


au lieu de

Code: Tout sélectionner
FROM oemp_campaigns_statistics LEFT JOIN oemp_campaigns ON


Ensuite, je ne comprends pas pourquoi tu fais le lien dans la jointure entre un numero d'annonceur et un nombre de "commandes" reçues. Ca n'a rien à voir selon moi.

Pour moi le lien entre compaigns et campaigns_statistics se fait par relcampaignID dans campaign_statistics qui contient l'id de la campaign.
Donc la jointure se fait sur

Code: Tout sélectionner
ON (oemp_campaigns_statistics.RelCampaignID=oemp_campaigns.CampaignID) 


Donne moi plus d'informations si ce n'est pas ça. Et n'oublie pas de tester ta requête sur phpMyAdmin.

Merci
Vive les tutomakers ;)

kaelkaelkael
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 59
Enregistré le: Ven Juil 18, 2008 9:26 pm

Re: probleme avec un JOIN

Messagepar kaelkaelkael le Dim Déc 13, 2009 10:35 pm

c'est nikel merci beaucoup

seulement j'ai d'autres problemes.

en fait c'est qu'une partie de la jointure qui vient d'etre faite.

je dois également joindre les tables:

oemp_campaigns_linkclicks
et
oemp_campaigns_read

CREATE TABLE `oemp_campaigns_linkclicks` (
`ID` int(11) NOT NULL auto_increment,
`RelCampaignID` int(11) NOT NULL default '0',
`RelCampaignStatisticsID` int(11) NOT NULL default '0',
`Link` text NOT NULL,
`LinkName` varchar(250) NOT NULL default '',
`ClickAmount` int(11) NOT NULL default '0',
PRIMARY KEY (`ID`),
KEY `RelCampaignID` (`RelCampaignID`,`RelCampaignStatisticsID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;


CREATE TABLE `oemp_campaigns_read` (
`ID` int(11) NOT NULL auto_increment,
`RelCampaignID` int(11) NOT NULL default '0',
`RelCampaignStatisticsID` int(11) NOT NULL default '0',
`ReadAmount` int(11) NOT NULL default '0',
`UniqueReadAmount` int(11) NOT NULL default '0',
PRIMARY KEY (`ID`),
KEY `RelCampaignStatisticsID` (`RelCampaignStatisticsID`),
KEY `RelCampaignID` (`RelCampaignID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;


pour la table oemp_campaigns_linkclicks, je dois additionner tous les nombres de du champ ClickAmount

la c'est une autre paire de manches

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Re: probleme avec un JOIN

Messagepar Yoyo le Lun Déc 14, 2009 10:14 am

Tu fais une quadruple jointure sur RelCampainId toujours :) Et ca passe :)
Vive les tutomakers ;)

kaelkaelkael
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 59
Enregistré le: Ven Juil 18, 2008 9:26 pm

Re: probleme avec un JOIN

Messagepar kaelkaelkael le Lun Déc 14, 2009 2:32 pm

Le probleme est que dans une table , le champ clic amount contient 2, 6,3, et je dois additionner ces valeurs pour toutes les lignes pour que le résultat m'affiche 11. Biensur la c'est qu'un exemple

Avatar de l’utilisateur
Yoyo
Gérant
Gérant
 
Messages: 2031
Enregistré le: Mer Sep 27, 2006 4:54 pm

Re: probleme avec un JOIN

Messagepar Yoyo le Mar Déc 15, 2009 2:38 am

tu fais une requête imbriquée alors :) SELECT ...,(SELECT SUM(X) FROM ... WHERE ... ) FROM ... WHERE
Vive les tutomakers ;)

kaelkaelkael
Tutomaker Apprenti
Tutomaker Apprenti
 
Messages: 59
Enregistré le: Ven Juil 18, 2008 9:26 pm

Re: probleme avec un JOIN

Messagepar kaelkaelkael le Jeu Déc 17, 2009 11:25 pm

Merci pour ta réponse, mais du coup je ne me servirais pas de ca. Le reste est amplement suffisant.
Merci a toi.



Retourner vers Langage PHP

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité