Contraire de "SELECT DISTINCT" en SQL
8 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Contraire de "SELECT DISTINCT" en SQL
Salut tout le monde,
j'aurais besoin d'un peu d'aide parce que là je pédale dans la semoule...
Je souhaiterais sélectionner toutes les lignes d'une table ou la commune et le nombre d'habitants sont identiques...
Cette fonction fonctionne :
SELECT *, count(*) FROM `villes` GROUP BY Commune,NombreHabitants HAVING count(*) > 1
Mais elle ne me sort qu'un seul enregistrement de la ligne en double. Et moi j'aurais besoin de tous les enregistrements dupliqués.
Si quelqu'un a une idée...Je suis preneur...
j'aurais besoin d'un peu d'aide parce que là je pédale dans la semoule...
Je souhaiterais sélectionner toutes les lignes d'une table ou la commune et le nombre d'habitants sont identiques...
Cette fonction fonctionne :
SELECT *, count(*) FROM `villes` GROUP BY Commune,NombreHabitants HAVING count(*) > 1
Mais elle ne me sort qu'un seul enregistrement de la ligne en double. Et moi j'aurais besoin de tous les enregistrements dupliqués.
Si quelqu'un a une idée...Je suis preneur...
Essaie cela, je ne suis pas sûr de la requête car je n'ai pas le shéma de ta table:
- Code: Tout sélectionner
SELECT NomVille, SUM(habitants) nombre FROM villes WHERE nombre = Commune GROUP BY NomVille
Ma table :
id || Commune || Codepos || NombreHabitants
1 || NIMES|| 30000 || 130000
2 || NIMES|| 30900|| 130000
3 || VIENNE|| 26000|| 12000
4 || MARSEILLE 1er arrdt || 13001|| 23000
5 || MARSEILLE 2er arrdt || 13002|| 25000
6 || MARSEILLE 3er arrdt || 13003|| 45000
7 || TOULOUSE || 81000|| 55000
8 || TOULOUSE || 81150|| 55000
Et je souhaite récupérer ça :
1 || NIMES|| 30000 || 130000
2 || NIMES|| 30900|| 130000
7 || TOULOUSE || 81000|| 55000
8 || TOULOUSE || 81150|| 55000
Grosso modo pour certaines villes, la ville est en double (seul le code postal différe) et je souhaiterais passer la population d'un des codes postaux à "0" pour ne pas fausser mes calculs de population.
je vais tester ta solution magicaxe
id || Commune || Codepos || NombreHabitants
1 || NIMES|| 30000 || 130000
2 || NIMES|| 30900|| 130000
3 || VIENNE|| 26000|| 12000
4 || MARSEILLE 1er arrdt || 13001|| 23000
5 || MARSEILLE 2er arrdt || 13002|| 25000
6 || MARSEILLE 3er arrdt || 13003|| 45000
7 || TOULOUSE || 81000|| 55000
8 || TOULOUSE || 81150|| 55000
Et je souhaite récupérer ça :
1 || NIMES|| 30000 || 130000
2 || NIMES|| 30900|| 130000
7 || TOULOUSE || 81000|| 55000
8 || TOULOUSE || 81150|| 55000
Grosso modo pour certaines villes, la ville est en double (seul le code postal différe) et je souhaiterais passer la population d'un des codes postaux à "0" pour ne pas fausser mes calculs de population.
je vais tester ta solution magicaxe
Re: Contraire de "SELECT DISTINCT" en SQL
FINIELS a écrit:Je souhaiterais sélectionner toutes les lignes d'une table ou la commune et le nombre d'habitants sont identiques...
Cette fonction fonctionne :
SELECT *, count(*) FROM `villes` GROUP BY Commune,NombreHabitants HAVING count(*) > 1
Mais elle ne me sort qu'un seul enregistrement de la ligne en double. Et moi j'aurais besoin de tous les enregistrements dupliqués.
Ben une fois que tu as la liste des doublons, il suffit de les afficher:
- Code: Tout sélectionner
SELECT * from villes WHERE (Commune,NombreHabitants) IN (SELECT Commune,NombreHabitants FROM villes GROUP BY 1,2 HAVING count(*)>1)
Jacques.
Une autre voie:
Ca doit te donner le résultat recherché.
Je me base sur une jointure entre la table villes et elle-même si le nom de la commune est identique, si le nombre d'habitants est égal et si le code postale est différent. Toutes les communes n'ayant pas d'équivalent au niveau du nom ou du nombre d'habitants ne ressortiront pas.
Attention, cette reqête ne fera pas ressortir le résultat suivants:
1 || NIMES|| 30000 || 130000
2 || NIMES|| 30900|| 130000
7 || TOULOUSE || 81000|| 55000
8 || TOULOUSE || 81150|| 55000
n || TOULOUSE || 81xxx|| 12000
Une commune Toulouse avec un nombre d'habitant différent de 55'000
A+
- Code: Tout sélectionner
SELECT v1.Commune, v1.CodePos, v1.NombreHabitant FROM villes v1 JOIN villes v2 ON v1.Commune = v2.Commune AND v1.CodePos != v2.CodePos AND v1.NombreHabitants = v2.NombreHabitant
Ca doit te donner le résultat recherché.
Je me base sur une jointure entre la table villes et elle-même si le nom de la commune est identique, si le nombre d'habitants est égal et si le code postale est différent. Toutes les communes n'ayant pas d'équivalent au niveau du nom ou du nombre d'habitants ne ressortiront pas.
Attention, cette reqête ne fera pas ressortir le résultat suivants:
1 || NIMES|| 30000 || 130000
2 || NIMES|| 30900|| 130000
7 || TOULOUSE || 81000|| 55000
8 || TOULOUSE || 81150|| 55000
n || TOULOUSE || 81xxx|| 12000
Une commune Toulouse avec un nombre d'habitant différent de 55'000
A+
Merci à tous pour votre aide mais je me suis débrouillé !
Ok ok c'est pas super optimisé et je me suis fais chier mais je suis arrivé au résultat voulu :
Ok ok c'est pas super optimisé et je me suis fais chier mais je suis arrivé au résultat voulu :
- Code: Tout sélectionner
$request = mysql_query("SELECT *, count(*) FROM `villes` GROUP BY Communeurl,NombreHabitants HAVING count(*) > 1");
while ($line = mysql_fetch_array($request)) {
$commune = $line['Communeurl'];
$cp = $line['Codepos'];
$id = $line['id'];
$hab = $line['NombreHabitants'];
$Communeurl = $line['Communeurl'];
echo 'Ville 1 : '.$commune.' '.$cp.' '.$hab.' ID : '.$id.' <input type="checkbox" name="test'.$id1.'" id='.$id1.' /><br />';
$request2 = mysql_query("SELECT * FROM `villes` WHERE Communeurl= '$commune' AND NombreHabitants = '$hab' AND Codepos NOT LIKE '$cp' ");
$line2 = mysql_fetch_array($request2);
$Commune2 = $line2['Communeurl'];
$cp2 = $line2['Codepos'];
$id2 = $line2['id'];
$hab2 = $line2['NombreHabitants'];
echo 'Ville 2 : '.$Commune2.' '.$cp2.' '.$hab2.' ID : '.$id2.'<input type="checkbox" name="test'.$id2.'" id='.$id2.' /><br />';
echo '<br />';
}
8 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- AdSense Tracking : statistiques détaillées sur les clics AdSense
- Outils Google pour les entreprises : Google Agency Toolkit
- De la publicité ciblée dans les cartes de Google Local
- Google AdWords introduit le concept de niveau de qualité
- Les adresses IP de Google et Googlebot
- Le marketing viral au service du référencement
- Calcul du ratio de liens profonds vers un site web
- Google écrit parfois au webmaster en cas de blacklistage
- Liste des produits et services de Google
- [SQL] Select, Distinct, Max, Group by et autres fariboles
- Probleme de SELECT DISTINCT
- MySql selection sans doublon (select distinct)
- Problème avec clause DISTINCT dans requête SQL
- Probleme select SQL
- sql : requête select MAX(champ) from table
- [SQL]Requete select à l'intérieur d'un Delete
- Pb d'organisation d'une UNION de deux requetes SELECT en sql
- SQL : faire un select indifférent aux caractère spéciaux
Consultez la description détaillée des produits ou services de Google suivants : Google TrustRank
- Calcul du taux de liens vers des pages internes
Cet outil vous permet de calculer le taux de liens profonds vers un site web. Un lien profond est un lien qui ne pointe pas vers la page d'accueil mais au contraire vers une page interne du site. Les sites dont l'essentiel du référencement vient de leurs inscriptions dans des annuaires ont un taux de liens profonds faible ; à l'inverse, les sites de référence ont souvent un taux de liens profonds plus important, signe que leur contenu a suscité de nombreux liens spontanés.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités




le forum