débutant-pataugeur SQLITE (comment regrouper des lignes ?)

Bonjour à tous,
en cette période de gadoue je patauge avec sqlite que je maîtrise comme mon vélo sur la grande bleue :

En bas de ce message ce que je réussis à faire mais avant le détail de ce que je souhaite

Je veux accéder et mettre en forme quelques données d’une base Sqlite existante :

La Table 1 contient entre autres un champ “Ville” :

Ville

Quimper
Rennes
Marseille

La Table 2 contient entre autres un champ “Prénom” (et aussi le champ Ville) :
Ville Nom

Quimper Pierre
Rennes Pierre
Rennes Paul
Marseille Jacqueline
Rennes Fanchig
Marseille Annie

et je souhaite regrouper les lignes pour obtenir :

Quimper Pierre
Rennes Pierre, Paul, Fanchig
Marseille Jacqueline, Annie

Pour l’instant je ne sais faire que :

Quimper Pierre
Rennes Pierre
Rennes Paul
Rennes Fanchig
Marseille Jacqueline
Marseille Annie

en utilisant :
$sql = "SELECT T2.Nom, T1.Ville, T2.Ville
FROM Table1 AS T1
INNER JOIN Table2 AS T2 ON T1.Ville=T2.Ville
GROUP BY T1.Ville ";

merci du coup de main !
Fulup

En mySQL, c’est ça en tout cas, je confirme… Mais je ne connais pas la différence entre mySQL et SQLite.

Ok Franck merci !

Pour la suite avec Sqlite (la mise en forme comme j’aimerai) je viens peut-être de trouver un début de solution par ici : http://stackoverflow.com/questions/9833091/using-order-by-clause-inside-group-concat-function-in-sqlite
… mais j’ai la digestion très lente et là je dois dire que la, en plus, j’ai quelques remontées gastriques …

Fulup

Mais peut-être que la bonne question à poser sur ce forum est plutôt :

qui pourrait me conseiller quant à un forum spécialisé dans sqlite pour poser ma question ?

(et parce que je m’aperçois qu’il y a des variantes de programmation selon que l’on parle de sqlite, de mysql de postgresql ou autre )

Fulup

Duckduckgo est ton meilleur conseiller :slight_smile:

ou qwant ou …

mais c’est pas mal aussi de demander l’avis à des zumains, non ?
et si en plus ils/elles sont locos … ça motive :wink:

tchou, tchou ;D

Je vais regarder… Mais je ne connais que mySQL pour le moment…
Mais chaque solution a son problème, on va trouver, pis c’est pas non plus un truc de fou… Ton SQL, derrière, tu le gère en PHP ?

[quote=« Franck, post:7, topic:3277 »]Je vais regarder… Mais je ne connais que mySQL pour le moment…
Mais chaque solution a son problème, on va trouver, pis c’est pas non plus un truc de fou… Ton SQL, derrière, tu le gère en PHP ?[/quote]

bonsoir et merci Franck pour ta réponse !
comme je viens de l’indiquer (et pour ne pas lancer simultanément plusieurs bouées de sauvetage) je viens d’écrire sur devellopez.net
et j’obtiens à l’instant cette réponse :

[glow=red,2,300]Une fonction très utile pour ta demande est group_concat

Donc j’écrirais ta requête ainsi :

SELECT T1.Ville, group_concat(t2.prenom, ', ')
FROM Table1 AS T1
JOIN Table2 AS T2 ON T1.Ville=T2.Ville
GROUP BY T1.Ville[/glow]

Je pensais avoir lu que group_concat n’était pas dispo sous sqlite mais me suis donc trompé (et c’est tant mieux !)
… évidemment les tracasseries s’accumulent toujours et en ce moment notre serveur associatif préféré et local fait -encore- la tête.
Il me faut donc attendre pour pouvoir tester.

Ton SQL, derrière, tu le gère en PHP ?
oui il n’y a guère que php dont je comprends … les -premières- bases :wink:

@+ dès que j’ai réussi à tester.

Fulup

OK.
Donc avec ce que tu récupère de ta première requète qui était plutôt bonne, tu peux gérer ça avec PHP…
Je peux regarder ça demain si tu veux… (ce soir, y’a foot à la TV) :slight_smile:

[quote=“Franck, post:9, topic:3277”]OK.
Donc avec ce que tu récupère de ta première requète qui était plutôt bonne, tu peux gérer ça avec PHP…
Je peux regarder ça demain si tu veux… (ce soir, y’a foot à la TV) :)[/quote]

C sympa :slight_smile:
J’ai bien “imaginé” mais sans saisir la méthode : j’avais pensé à un tableau pour stocker les infos au lieu de les afficher immédiatement … mais ne me sentais pas partir dans une usine à gaz

pour l’affichage c’est ainsi :

[code]$reponse = $bd->query($sql, $err);
if ($reponse === FALSE) {
echo "La requete a echouee pour la raison suivante: ".$err;}
else {
echo “Voici la liste correspondant à votre requête :”.’
’.’
’;
echo ‘

’;
while ($row = $reponse->fetch()) {

$i++;
echo ’

'; } echo '
'.$row["T1.Ville"].' ('.$row["T2.Nom"].' )'.'

'; } echo $i." réponse(s) à votre requête.";[/code]

Peut-être est-ce après >>>>while ($row = $reponse->fetch()) { <<<< qu’il faudrait insérer un script php qui créerait un tableau et afficherait correctement ?
Je voulais sans doute enfoncer mes clous avec la boite servant à les ranger … et tenter ainsi de gagner du temps en ne sortant pas le marteau de ma poche :wink:

bon match !
Fulup

C’est une bonne base, mais c’est là qu’est ton problème, je pense…
Rappelles moi demain si j’oublie (j’ai une mémoire d’huître alcoolique).

Bonjour Franck,
Bonjour tout le monde,

Tout d’abord je ne suis pas d’accord : certaines huitres ont une bonne mémoire !
Un exemple ? https://huit.re/memoire

Sinon, et pour revenir à mon souci et si je t’ai bien suivi il va s’agir
1/ d’insérer dans la boucle while{} une demande de stockage des données « Ville » et « Prénom » dans un tableau
2/ puis de traiter, d’afficher ces données ensuite comme bon me semble.

C’est bien sur ce principe qu’il me faut réfléchir ?

@+