IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Comment puis-je discocier deux noms de champs identiques de deux table différentes [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut Comment puis-je discocier deux noms de champs identiques de deux table différentes
    Bonjour à tous,

    Je travaille sur une base de donnée qui a 9 tables différentes. La plus part sont liées esembles.
    Voici le schéma:
    Nom : Screen Shot 2018-02-26 at 5.00.35 PM.png
Affichages : 1288
Taille : 188,1 Ko

    Actuellement, je questionne la table 'stations' et je souhaite extraire toutes les collections de mesures liées à cette station (qui contient plusieurs capteurs). Plus tard, je souhaite filtrer les mesures en fonction du capteur.

    Pour le moment, je souhaite lister toutes les mesures liés à cette station.

    Ma requêtes SQL est la suivante:
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    	$sql_select = 'SELECT * FROM stations AS st 
    	LEFT JOIN sensors AS se ON st.id_station = se.stations_id_station
    	LEFT JOIN sensor_types AS stype ON se.sensor_types_id_sensor_type = stype.id_sensor_type
    	LEFT JOIN measures AS m ON se.id_sensor = m.sensors_id_sensor
    	LEFT JOIN collections AS c ON m.collections_id_collection = c.id_collection
    	WHERE st.id_station = '.$station.' AND c.date >= "'.$from.'" AND c.date <= "'.$to.'"
     
    	ORDER BY c.id_collection, c.date ASC';
     
    	$sql_result = $connect->query($sql_select);
     
    	echo "<h1>".$sql_result->num_rows." measures</h1>";
    	//print_r($sql_result);
     
    	//$row = $sql_result->fetch_assoc();
    	//print_r($row);	
     
    	echo "<ul>";
    	while($row = $sql_result->fetch_assoc()){	
    		echo "<li>";
    		print_r($row);
    		echo "</li>";
    		echo "<li><b>Station ID: ".$row['id_station']." Sensor ID: ".$row['id_sensor']."</b></li>";
    		echo "<li> Collection ID: ".$row['collections_id_collection']."</li>";
     
     
    		$collections[$row['collections_id_collection']]['pond']="pondx(station)";
    		$collections[$row['collections_id_collection']]['collection']="pondx(station)";
    		$collections[$row['collections_id_collection']]['Time']=$row['date'];
    		$collections[$row['collections_id_collection']]['wl']=$row['value'];
    		$collections[$row['collections_id_collection']]['wln']=$row['date'];
     
     
    		//echo "<li> Collection date: ".$row['date']."</li>";
    		echo "<li>Sensor Name: ".$row['longname']." (".$row['name'].")</li>";
    		echo "<li>Sensor Value: ".$row['value']."</li>";
    		echo "<li><hr></li>";
    		echo "<li>";
    		print_r($collections);
    		echo "</li>";
    		echo "<li><hr></li>";
    	}
    	echo "</ul>";
    Je ne sais pas si mes jointures sont bien fâites, mais elle semble ben fonctionner. Sauf que pour les tables qui ont le nom de champs, il me l'affiche qu'une fois.

    Par exempel si vous regarder ma table 'stations','sensors' et 'sensor_type' elle a un champs 'name'.
    le
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print_r($row);
    me retourne
    Array ( [id_station] => 1 [fields_id_field] => 1 [name] => wl [longname] => Waterlevel [lat] => [lng] => [alt] => [installed] => 2018-02-13 00:00:00 [description] => [created] => 2018-02-26 12:57:58 [id_sensor] => 1 [stations_id_station] => 1 [sensor_types_id_sensor_type] => 1 [id_sensor_type] => 1 [sensor_families_id_sensor_family] => 1 [mesure_unit] => m [id_measure] => 1 [sensors_id_sensor] => 1 [collections_id_collection] => 1 [value] => 822.8850 [id_collection] => 1 [collectionid] => 1 [date] => 2017-10-17 00:00:00 )
    Alors que si je renome mon champs 'name' en 'names' de ma table 'sensors', il m'affiche ceci

    Array ( [id_station] => 1 [fields_id_field] => 1 [names] => pond7A [longname] => Waterlevel [lat] => [lng] => [alt] => [installed] => 2018-02-13 00:00:00 [description] => [created] => 2018-02-26 12:57:58 [id_sensor] => 1 [stations_id_station] => 1 [sensor_types_id_sensor_type] => 1 [name] => wl [id_sensor_type] => 1 [sensor_families_id_sensor_family] => 1 [mesure_unit] => m [id_measure] => 1 [sensors_id_sensor] => 1 [collections_id_collection] => 1 [value] => 822.8850 [id_collection] => 1 [collectionid] => 1 [date] => 2017-10-17 00:00:00 )
    Je pourrais alors donner des noms de champ unique dans toutes mes tables, mais je ne pense pas que c'est la solution idée.

    Il doit bien àa voir une solution au niveau MySQL, non?

    Merci pour vos lumières

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 670
    Par défaut
    de la même façon que vous utilisez des alias pour les noms de tables, vous pouvez faire la même chose pour les noms des champs :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT se.name AS sensors_name, stype.name AS stype_name, st.name AS station_name, * FROM ...

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut
    Super, merci beaucoup!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/04/2010, 08h43
  2. [MySQL] 2 noms de champs identiques dans 2 tables différentes
    Par Shinoda00 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/06/2009, 09h23
  3. noms de champs identiques
    Par benoitB dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/02/2007, 10h15
  4. Comment affecter à 1 variable le nom du champ
    Par Whyalemon dans le forum Access
    Réponses: 1
    Dernier message: 26/10/2006, 15h08
  5. Sélection de 2 champs identiques dans 2 tables différentes
    Par Véronique75ca dans le forum Access
    Réponses: 3
    Dernier message: 28/06/2006, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo