SELECT sur 2 tables, nb colonnes !=
Résolu/Fermé
liadea
Messages postés
127
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
30 juin 2010
-
19 févr. 2010 à 13:31
Darkito Messages postés 1190 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 - 24 févr. 2010 à 15:47
Darkito Messages postés 1190 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 - 24 févr. 2010 à 15:47
A voir également:
- SELECT sur 2 tables, nb colonnes !=
- 2 comptes whatsapp - Guide
- Fusionner 2 colonnes excel - Guide
- Word 2 colonnes - Guide
- Comment faire une table des matières sur word - Guide
- 2 ecran pc - Guide
27 réponses
garion28
Messages postés
1543
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
403
23 févr. 2010 à 08:56
23 févr. 2010 à 08:56
ca serai plus simple de passer par des variables pour stocker tes résultat et formater ton fichier (formater dans le sens donner un format précis et pas supprimer ^^)
liadea
Messages postés
127
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
30 juin 2010
23 févr. 2010 à 08:27
23 févr. 2010 à 08:27
Personne n'aurait ne serait-ce que le début d'une idée ??
garion28
Messages postés
1543
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
403
23 févr. 2010 à 08:34
23 févr. 2010 à 08:34
tu ne pourrai pas donner des info plus concrète ? parce que moi les t1,d1,toto,tutu ca me fait penser a un de mes profs et en plus ca ne veut strictement rien dire
et tu ne peut pas mettre plusieurs select dans une requète (c'est comme si tu mettai plusieurs volant dans une voiture)
a premiere vu yaurai juste a tout mettre dans la même requète, le distinct sert juste a enlever les doublons
et tu ne peut pas mettre plusieurs select dans une requète (c'est comme si tu mettai plusieurs volant dans une voiture)
a premiere vu yaurai juste a tout mettre dans la même requète, le distinct sert juste a enlever les doublons
liadea
Messages postés
127
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
30 juin 2010
23 févr. 2010 à 08:41
23 févr. 2010 à 08:41
Bonjour,
merci d'avoir répondu
En effet c'est ce que je voudrais enlever les doublons mais que sur 2 colonnes de ma 1ere table et ensuite selectionner d'autres colonnes de cette même table mais qui elles n'ont pas de doublons !
Et ensuite intégrer des données de la 2eme table.
Il me faut une seule requête pour récupérer l'ensemble de ces données que j'inscrit dans un fichier texte.
c'est un peu plus clair ou toujours pas ? ? lol
merci d'avoir répondu
En effet c'est ce que je voudrais enlever les doublons mais que sur 2 colonnes de ma 1ere table et ensuite selectionner d'autres colonnes de cette même table mais qui elles n'ont pas de doublons !
Et ensuite intégrer des données de la 2eme table.
Il me faut une seule requête pour récupérer l'ensemble de ces données que j'inscrit dans un fichier texte.
c'est un peu plus clair ou toujours pas ? ? lol
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
garion28
Messages postés
1543
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
403
23 févr. 2010 à 08:46
23 févr. 2010 à 08:46
bof, je m'en contenterai :D
a la limite tu t'en fou d'utiliser le distinct sur des champs où il n'y a pas de doublon, ca ne va pas te supprimer des champs
par contre pour les 2 premères ligne, est ce que tu veu extraire les champs sans condition ? ou bien tu veu prendre les conditions de la 3 ème (et derniere) ligne ?
a la limite tu t'en fou d'utiliser le distinct sur des champs où il n'y a pas de doublon, ca ne va pas te supprimer des champs
par contre pour les 2 premères ligne, est ce que tu veu extraire les champs sans condition ? ou bien tu veu prendre les conditions de la 3 ème (et derniere) ligne ?
liadea
Messages postés
127
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
30 juin 2010
23 févr. 2010 à 08:52
23 févr. 2010 à 08:52
Pour les 2 champs qu'il me faut en DISTINCT je n'ai pas de condition
liadea
Messages postés
127
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
30 juin 2010
23 févr. 2010 à 08:58
23 févr. 2010 à 08:58
C'est à dire ? lol
C'est possible d'avoir un tout p'tit peu + d'explications stp ?
C'est possible d'avoir un tout p'tit peu + d'explications stp ?
garion28
Messages postés
1543
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
403
23 févr. 2010 à 09:03
23 févr. 2010 à 09:03
tu utilise du php pour créer ton fichier texte a envoyer non ?
liadea
Messages postés
127
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
30 juin 2010
23 févr. 2010 à 09:05
23 févr. 2010 à 09:05
Oui
garion28
Messages postés
1543
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
403
23 févr. 2010 à 09:07
23 févr. 2010 à 09:07
donc tu peu faire plusieurs requètes et mettre le résultat de ces requètes dans ton fichier texte, cependant vu que les info ne sont pas forcément les mêmes il vaut mieux que la personne qui recevra le fichier sache comment traiter les infos et a quoi correspond chaque colonne
liadea
Messages postés
127
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
30 juin 2010
23 févr. 2010 à 09:16
23 févr. 2010 à 09:16
Je vais essayer .
Merci
Merci
Darkito
Messages postés
1190
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
544
23 févr. 2010 à 09:21
23 févr. 2010 à 09:21
Bonjour,
il doit y avoir moyen de trouver ce que tu cherches avec une jointure :
il doit y avoir moyen de trouver ce que tu cherches avec une jointure :
SELECT (DISTINCT t1.d1), (DISTINCT t1.d2), t1.d3, t1.d4, t1.d5, t2.d1 , t2.d2, t2.d3 FROM t1 LEFT JOIN t2 ON t1.d5 = t2.d1 AND t2.d2 WHERE t2.d2 = "toto" AND t2.d3 ="tutu"
liadea
Messages postés
127
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
30 juin 2010
23 févr. 2010 à 09:41
23 févr. 2010 à 09:41
Bonjour,
Je pense aussi que ça peut se faire en une seule requête avec des jointures mais bon malgrés tous les essais que j'ai pu faire j'ai jamais obtenu ce que je souhaitais et toujours pas avec celle que tu viens de me donner !!
Merci encore
Si vous avez d'autres idées hésitez pas !!
Merci
Je pense aussi que ça peut se faire en une seule requête avec des jointures mais bon malgrés tous les essais que j'ai pu faire j'ai jamais obtenu ce que je souhaitais et toujours pas avec celle que tu viens de me donner !!
Merci encore
Si vous avez d'autres idées hésitez pas !!
Merci
garion28
Messages postés
1543
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
403
23 févr. 2010 à 09:43
23 févr. 2010 à 09:43
si tu ne fait qu'une requète, alors tout les champs du select seront soumis aux conditions.
il y a ptete une solution avec des requètes multiple (genre requète imbriqué), mais vu la complexité tu ferai pareil avec du code et plusieurs requètes (ca ne ferai que quelques lignes en plus
il y a ptete une solution avec des requètes multiple (genre requète imbriqué), mais vu la complexité tu ferai pareil avec du code et plusieurs requètes (ca ne ferai que quelques lignes en plus
Darkito
Messages postés
1190
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
544
23 févr. 2010 à 09:50
23 févr. 2010 à 09:50
Pour rejoindre le post 3 de Garion28, peux-tu nous donner un exemple des lignes de tes tables avec le résultat attendu ?
Cela permettrai de mieux comprendre ce que tu cherches vraiment.
Je pense quand même qu'il vaut mieux faire une seule requête, même si elle est un peu plus complexe plutôt que de faire un traitement php derrière...
Cela permettrai de mieux comprendre ce que tu cherches vraiment.
Je pense quand même qu'il vaut mieux faire une seule requête, même si elle est un peu plus complexe plutôt que de faire un traitement php derrière...
liadea
Messages postés
127
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
30 juin 2010
23 févr. 2010 à 10:14
23 févr. 2010 à 10:14
1ere Table :
NomNetbios SourceMAJ AdresseIP EmailENTITE ENTITE SITE
toto aaaa.fr 1.2.3.4 support-mess@nantes.fr nantes orvault
tata bbbb.fr 5.6.7.8 support-mess@nantes.fr nantes carquefou
tutu cccc.fr 9.10.11.12 support-mess@rennes.fr rennes cleunay
2eme Table :
AdresseIP SourceMAJ DateUA ETAT (=résultat PING du jour)
1.2.3.4 aaaa.fr 2010-02-23 1
5.6.7.8 bbbb.fr 2010-02-23 0
9.10.11.12 cccc.fr 2010-02-23 1
Donc j'ai +sieurs fois le meme email et la meme entite
je dois récupérer toutes les infos de la 1ere table SI l'adresseIP de la 1ere est dans la 2eme que la date est la date du jour et que son etat et KO c'est à dire = à 1.
dans a 2eme table je vais avoir aussi des données des dates précédente avec les mêmes adresses IP et source qui ont été pinguer les jours précedents.
Il faut donc que je récupère qu'une seule fois le mail ainsi que l'entite car mon fichier portera le nom de l'entité et enverra au mail correspondant.
Une Entité peut avoir plusieurs IP
donc je vais pas envoyé 10 fois un mail avec une IP différente je voudrais tout regrouper !!
c'est un peu plus clair ou trop compliqué ?
NomNetbios SourceMAJ AdresseIP EmailENTITE ENTITE SITE
toto aaaa.fr 1.2.3.4 support-mess@nantes.fr nantes orvault
tata bbbb.fr 5.6.7.8 support-mess@nantes.fr nantes carquefou
tutu cccc.fr 9.10.11.12 support-mess@rennes.fr rennes cleunay
2eme Table :
AdresseIP SourceMAJ DateUA ETAT (=résultat PING du jour)
1.2.3.4 aaaa.fr 2010-02-23 1
5.6.7.8 bbbb.fr 2010-02-23 0
9.10.11.12 cccc.fr 2010-02-23 1
Donc j'ai +sieurs fois le meme email et la meme entite
je dois récupérer toutes les infos de la 1ere table SI l'adresseIP de la 1ere est dans la 2eme que la date est la date du jour et que son etat et KO c'est à dire = à 1.
dans a 2eme table je vais avoir aussi des données des dates précédente avec les mêmes adresses IP et source qui ont été pinguer les jours précedents.
Il faut donc que je récupère qu'une seule fois le mail ainsi que l'entite car mon fichier portera le nom de l'entité et enverra au mail correspondant.
Une Entité peut avoir plusieurs IP
donc je vais pas envoyé 10 fois un mail avec une IP différente je voudrais tout regrouper !!
c'est un peu plus clair ou trop compliqué ?
Darkito
Messages postés
1190
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
544
23 févr. 2010 à 12:03
23 févr. 2010 à 12:03
C'est un peu plus clair avec le cas concret.
Tu veux envoyer à chaque entité la liste de leur serveurs qui ne répondent pas au ping ?
Si tu crées un fichier texte par entité, il faut effectivement que tu fasse plusieurs requêtes...
Dans un premier temps, tu récupères la liste des entités à qui il faut envoyer un mail :
Ensuite, pour chacune de ces entités, tu récupères la liste des serveurs qui ne répondent pas :
Tu veux envoyer à chaque entité la liste de leur serveurs qui ne répondent pas au ping ?
Si tu crées un fichier texte par entité, il faut effectivement que tu fasse plusieurs requêtes...
Dans un premier temps, tu récupères la liste des entités à qui il faut envoyer un mail :
SELECT DISTINCT ENTITE, EmailENTITE FROM Table1 t1 JOIN Table2 t2 ON t1.AdresseIP =t2.AdresseIP AND t2.ETAT=1 AND t2.DateUA = CURRENT DATE
Ensuite, pour chacune de ces entités, tu récupères la liste des serveurs qui ne répondent pas :
SELECT t1.NomNetbios, t1.AdresseIP, t1.SITE FROM Table1 t1 JOIN Table2 t2 ON t1.AdresseIP =t2.AdresseIP AND t2.ETAT=1 AND t2.DateUA = CURRENT DATE
liadea
Messages postés
127
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
30 juin 2010
23 févr. 2010 à 12:12
23 févr. 2010 à 12:12
Oui merci
Mais comment fait on pour écrire les résultats de ces 2 requêtes dans un même fichier texte ??
C'est pourquoi je ne voulait en faire qu'une seule afin d'écrire le résultat dans le fichier texte en fonction de l'entité et l'envoyer
Mais comment fait on pour écrire les résultats de ces 2 requêtes dans un même fichier texte ??
C'est pourquoi je ne voulait en faire qu'une seule afin d'écrire le résultat dans le fichier texte en fonction de l'entité et l'envoyer
Darkito
Messages postés
1190
Date d'inscription
vendredi 7 décembre 2007
Statut
Membre
Dernière intervention
26 mai 2010
544
23 févr. 2010 à 12:29
23 févr. 2010 à 12:29
Pour la 2eme requête, j'ai oublié de mettre la condition sur l'entité :
la première requête te donne le destinataire et le titre de ton mail.
Dans le corps, tu mets le résultat de la 2eme requête.
SELECT t1.NomNetbios, t1.AdresseIP, t1.SITE FROM Table1 t1 JOIN Table2 t2 ON t1.AdresseIP =t2.AdresseIP AND t2.ETAT=1 AND t2.DateUA = CURRENT DATE WHERE ENTITE=$entite_php
la première requête te donne le destinataire et le titre de ton mail.
Dans le corps, tu mets le résultat de la 2eme requête.
liadea
Messages postés
127
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
30 juin 2010
23 févr. 2010 à 14:41
23 févr. 2010 à 14:41
Je te remercie je récupère bien les données dont j'ai besoin cependant j'ai un dernier soucis, je n'ai qu'un seul fichier texte de créer au lieu de 3 en fonction de mes entité qui bug !
Est ce que tu serais me dire comment faire ?
je t'ai mis mon code si tu as un peu de temps!
Merci d'avance
$today = date("Y-m-d");
$req1 = "SELECT DISTINCT EmailENTITE,ENTITE FROM ua
JOIN notifications ON ua.AdresseIP = notifications.AdresseIP
WHERE notifications.ETAT='1' AND notifications.DateUA = '$today'";
$res1 = mysql_query($req1) or die('Erreur SQL !<br />' . $req1 . '<br />' . mysql_error());
//Récuperation des résultats
while ($row = mysql_fetch_row($res1)){
$mailent = $row[0];
$entite = $row[1];
echo" <br/>
<br/>MAIL ENTITE : $mailent
<br/>ENTITE : $entite
<br/>
";
}
$req2 = "SELECT '$mailent','$entite',ua.NomNetbios,ua.SourceMAJ,ua.AdresseIP,ua.SITE,notifications.DateUA,notifications.ETAT FROM ua
JOIN notifications
ON ua.AdresseIP = notifications.AdresseIP
AND notifications.ETAT='1' AND notifications.DateUA = '$today'
WHERE ENTITE = '$entite'
AND EmailENTITE = '$mailent'";
$res2 = mysql_query($req2) or die('Erreur SQL !<br />' . $req2 . '<br />' . mysql_error());
//Récuperation des résultats
while ($row = mysql_fetch_row($res2)){
$mailent = $row[0];
$entite = $row[1];
$netbios = $row[2];
$source = $row[3];
$ip = $row[4];
$site = $row[5];
$date = $row[6];
$eta = $row[7];
$hl = "Hors Ligne";
$etat=STR_REPLACE("1","$hl","$eta");
echo" <br/>
<br/>MAIL ENTITE : $mailent
<br/>ENTITE : $entite
<br/>NOM NETBIOS : $netbios
<br/>SOURCE MAJ : $source
<br/>ADRESSE IP : $ip
<br/>SITE : $site
<br/>DATE : $date
<br/>ETAT : $etat
<br/>
";
$fp = fopen("$entite.txt","a");
fwrite($fp, "\nNOM NETBIOS");
fwrite($fp, "\tSOURCE");
fwrite($fp, "\tADRESSE IP");
fwrite($fp, "\tMAIL ENTITE");
fwrite($fp, "\tENTITE");
fwrite($fp, "\tSITE");
fwrite($fp, "\tDATEUA");
fwrite($fp, "\tETAT");
fwrite($fp, "\n$netbios");
fwrite($fp, "\t$source");
fwrite($fp, "\t$ip");
fwrite($fp, "\t$mailent");
fwrite($fp, "\t$entite");
fwrite($fp, "\t$site");
fwrite($fp, "\t$date");
fwrite($fp, "\t$etat");
fclose($fp);
}
Est ce que tu serais me dire comment faire ?
je t'ai mis mon code si tu as un peu de temps!
Merci d'avance
$today = date("Y-m-d");
$req1 = "SELECT DISTINCT EmailENTITE,ENTITE FROM ua
JOIN notifications ON ua.AdresseIP = notifications.AdresseIP
WHERE notifications.ETAT='1' AND notifications.DateUA = '$today'";
$res1 = mysql_query($req1) or die('Erreur SQL !<br />' . $req1 . '<br />' . mysql_error());
//Récuperation des résultats
while ($row = mysql_fetch_row($res1)){
$mailent = $row[0];
$entite = $row[1];
echo" <br/>
<br/>MAIL ENTITE : $mailent
<br/>ENTITE : $entite
<br/>
";
}
$req2 = "SELECT '$mailent','$entite',ua.NomNetbios,ua.SourceMAJ,ua.AdresseIP,ua.SITE,notifications.DateUA,notifications.ETAT FROM ua
JOIN notifications
ON ua.AdresseIP = notifications.AdresseIP
AND notifications.ETAT='1' AND notifications.DateUA = '$today'
WHERE ENTITE = '$entite'
AND EmailENTITE = '$mailent'";
$res2 = mysql_query($req2) or die('Erreur SQL !<br />' . $req2 . '<br />' . mysql_error());
//Récuperation des résultats
while ($row = mysql_fetch_row($res2)){
$mailent = $row[0];
$entite = $row[1];
$netbios = $row[2];
$source = $row[3];
$ip = $row[4];
$site = $row[5];
$date = $row[6];
$eta = $row[7];
$hl = "Hors Ligne";
$etat=STR_REPLACE("1","$hl","$eta");
echo" <br/>
<br/>MAIL ENTITE : $mailent
<br/>ENTITE : $entite
<br/>NOM NETBIOS : $netbios
<br/>SOURCE MAJ : $source
<br/>ADRESSE IP : $ip
<br/>SITE : $site
<br/>DATE : $date
<br/>ETAT : $etat
<br/>
";
$fp = fopen("$entite.txt","a");
fwrite($fp, "\nNOM NETBIOS");
fwrite($fp, "\tSOURCE");
fwrite($fp, "\tADRESSE IP");
fwrite($fp, "\tMAIL ENTITE");
fwrite($fp, "\tENTITE");
fwrite($fp, "\tSITE");
fwrite($fp, "\tDATEUA");
fwrite($fp, "\tETAT");
fwrite($fp, "\n$netbios");
fwrite($fp, "\t$source");
fwrite($fp, "\t$ip");
fwrite($fp, "\t$mailent");
fwrite($fp, "\t$entite");
fwrite($fp, "\t$site");
fwrite($fp, "\t$date");
fwrite($fp, "\t$etat");
fclose($fp);
}