MySQL obtenir la colonne de la table de référence de clé primaire
- mindfullsilence
- Professor


- Inscription: Aoû 04, 2008
- Messages: 846
- Status: Offline
Donc j'ai 2 tables dans ma base de données (2 en fait plus qui, mais ces sont pertinentes) :
Permet de prétendre qu'il y a un plus gros ensemble de colonnes de chaque table et beaucoup plus d'entrées de chaque table. J'ai une requête select qui obtient toutes les entrées dans le tableau du joueur. Mon résultat ressemble à ceci :
Toutefois, les Id préfère qu'elle soit présente (prêtez attention à la partie de l'équipe) :
IVe googlé pendant un certain temps maintenant et Im assez sûr qu'il faut utiliser une jointure ? J'ai vérifié les jointures...n'ont absolument aucune idée comment les utiliser pour faire ce que je voudrais faire. Les preneurs ? Ce qui devrait ma requête ressemble ?
PHP Code: [ Select ]
Player Table
_____________________________________________
| playerid | pla_lname | pla_fname | teamid |
---------------------------------------------
| 1 | bob | goober | 2 |
---------------------------------------------
Team Table
________________________
| teamid | team_name |
------------------------
| 1 | tigers |
------------------------
| 2 | bears |
------------------------
_____________________________________________
| playerid | pla_lname | pla_fname | teamid |
---------------------------------------------
| 1 | bob | goober | 2 |
---------------------------------------------
Team Table
________________________
| teamid | team_name |
------------------------
| 1 | tigers |
------------------------
| 2 | bears |
------------------------
- Player Table
- _____________________________________________
- | playerid | pla_lname | pla_fname | teamid |
- ---------------------------------------------
- | 1 | bob | goober | 2 |
- ---------------------------------------------
- Team Table
- ________________________
- | teamid | team_name |
- ------------------------
- | 1 | tigers |
- ------------------------
- | 2 | bears |
- ------------------------
Permet de prétendre qu'il y a un plus gros ensemble de colonnes de chaque table et beaucoup plus d'entrées de chaque table. J'ai une requête select qui obtient toutes les entrées dans le tableau du joueur. Mon résultat ressemble à ceci :
PHP Code: [ Select ]
_____________________________________________
| playerid | pla_lname | pla_fname | teamid |
---------------------------------------------
| 1 | bob | goober | 2 |
---------------------------------------------
| playerid | pla_lname | pla_fname | teamid |
---------------------------------------------
| 1 | bob | goober | 2 |
---------------------------------------------
- _____________________________________________
- | playerid | pla_lname | pla_fname | teamid |
- ---------------------------------------------
- | 1 | bob | goober | 2 |
- ---------------------------------------------
Toutefois, les Id préfère qu'elle soit présente (prêtez attention à la partie de l'équipe) :
PHP Code: [ Select ]
_____________________________________________
| playerid | pla_lname | pla_fname |teamname|
---------------------------------------------
| 1 | bob | goober | bears |
---------------------------------------------
| playerid | pla_lname | pla_fname |teamname|
---------------------------------------------
| 1 | bob | goober | bears |
---------------------------------------------
- _____________________________________________
- | playerid | pla_lname | pla_fname |teamname|
- ---------------------------------------------
- | 1 | bob | goober | bears |
- ---------------------------------------------
IVe googlé pendant un certain temps maintenant et Im assez sûr qu'il faut utiliser une jointure ? J'ai vérifié les jointures...n'ont absolument aucune idée comment les utiliser pour faire ce que je voudrais faire. Les preneurs ? Ce qui devrait ma requête ressemble ?
Use your words like arrows to shoot toward your goal.
- Anonymous
- Bot


- Inscription: 25 Feb 2008
- Messages: ?
- Loc: Ozzuland
- Status: Online
Mars 29th, 2012, 1:38 am
- this213
- Guru


- Inscription: Mar 01, 2004
- Messages: 1242
- Loc: ./
- Status: Offline
Il existe quelques façons vous pouvez le faire. Si vous « devez » utiliser une jointure :
Considérant que chaque joueur aurait une équipe affectée (qui peut être pas le cas), vous pouvez aussi faire :
Toutefois, cette dernière ne reviendra pas toutes les lignes qui n'ont pas une association dans le tableau « équipes » - vous pouvez trouver cet utile ainsi bien (l'instruction de jointure est saisir les lignes qui ne sont pas associés dans le tableau des équipes).
Aussi, si votre base de données est lourdement chargé, vous pouvez retirer les dossiers que vous voulez en tableaux et faire ensuite votre correspondant dans le code. Ill habituellement cela si Im accaparement de tous les documents associés à un ensemble donné juste à transfert de charge de la db dans le script.
Code: [ Select ]
SELECT a.playerid,a.pla_lname,pla_fname,b.teamname FROM players a INNER JOIN teams b ON a.teamid=b.teamid
Considérant que chaque joueur aurait une équipe affectée (qui peut être pas le cas), vous pouvez aussi faire :
Code: [ Select ]
SELECT a.playerid,a.pla_lname,pla_fname,b.teamname FROM players a,teams b WHERE a.teamid=b.teamid
Toutefois, cette dernière ne reviendra pas toutes les lignes qui n'ont pas une association dans le tableau « équipes » - vous pouvez trouver cet utile ainsi bien (l'instruction de jointure est saisir les lignes qui ne sont pas associés dans le tableau des équipes).
Aussi, si votre base de données est lourdement chargé, vous pouvez retirer les dossiers que vous voulez en tableaux et faire ensuite votre correspondant dans le code. Ill habituellement cela si Im accaparement de tous les documents associés à un ensemble donné juste à transfert de charge de la db dans le script.
- mindfullsilence
- Professor


- Inscription: Aoû 04, 2008
- Messages: 846
- Status: Offline
Awesome, merci 213. Que vous pourrait briser l'une pour moi donc je le comprends un peu mieux ? Le second exemple est assez explicatif, je pense que j'obtiens que l'on se porte très bien. Reasearching (googleing) jointure revient avec sur un blogs bajillion que ne rien faire de plus alors de copier-coller la documentation de MySQL, que je ne comprends pas. J'ai besoin d'une explication différente. Si vous avez le temps Id grandement apprécier l'effort.
Use your words like arrows to shoot toward your goal.
- this213
- Guru


- Inscription: Mar 01, 2004
- Messages: 1242
- Loc: ./
- Status: Offline
http://dev.mysql.com/doc/refman/5.0/en/join.html
Cette page décrit les instructions JOIN mieux que je le pouvais, mais peut-être Im utilisée seulement à la lecture de la documentation technique.
JOIN comme il dit, exécutez cette requête (SELECT a.playerid,a.pla_lname,pla_fname,b.teamname), sélectionnez simplement de ce tableau (de joueurs une), sélectionnez également de ce tableau (équipe b) où le premier associe à la seconde de cette manière (sur a.teamid=b.teamid).
En ce qui concerne les différents types de jointures (gauche, droite, Croix, naturelles, interne, externe) tout cela dépend de quels documents vous voulez retourné si il ne sont pas correspondance lignes dans les tables. Plutôt que d'écrire un essai page 3 sur comment ces travaux, Qu'ill vous invite à créer des tables d'un couple avec des lignes qui n'associent pas comme les lignes qui font et jouent avec la syntaxe de requête.
Dans mon code, j'utilise pratiquement jamais rejoindre (il y a des fois, mais ses rares). 9 fois de 10, j'ai besoin de 1 des 2 choses : un ensemble spécifique de toutes les tables impliquées qui sont associés liés juste titre, pour le second exemple fonctionne comme prévu et d'une manière stable. À l'aide d'une jointure dans le code, comme cela peut conduire à des lignes renvoyées qui ne sont pas associés à la table primaire et cela signifie que vous tirent des données que vous n'avez pas besoin, qui à son tour pourrait se gâcher les structures de données dans votre code (telles que tableaux associatifs tenant des éléments supplémentaires qui à leur tour pourraient fournir un enregistrement fantôme avec aucun id primaire). Ou qu'il faut effectuer une sorte de travail sur chaque ligne dans une table et ces cas, selon la taille de la table, le malade soit juste tirer le tout en une fois ou mal itérer sur chaque dossier à un endroit dans mon code. De toute façon, theres aucun besoin d'une jointure.
Je vais énoncer, si vous le n'avez pas remarqué, Im quelque chose d'un nazi de code. Cela n'applique pas seulement à l'aspect de mon code, mais à la façon dont il fonctionne. Toutes les tables de ma base de données ont les appareils construits Association, j'ai tendance à écrire tout naturellement des tables normalisées sans vraiment y penser. Ce que cela signifie est si il y a des lignes dans une table qui ne sont pas associés à un autre, d'une certaine façon sa parce qu'il n'y a aucune relation entre les deux. Si deux table ont-ils des associations et sont rangées dans l'une qui ne sont pas associées à l'autre, cela signifie que quelqu'un a été jouer avec mon code ou de parler à mon db d'une autre base de code et que les données est entrée soit erroné ou pure et simple n'appartient pas il. Je dois payé double mon taux horaire pour corriger les autres ordures des peuples, afin que mes employeurs habituellement ne laissera personne près de mon travail. Dans les deux cas, s'il y a des données dans mes bases de données qui n'appartient pas et n'est pas associé à droite, mon propre code sera tirez pas les enregistrements de toute façon.
Cette page décrit les instructions JOIN mieux que je le pouvais, mais peut-être Im utilisée seulement à la lecture de la documentation technique.
JOIN comme il dit, exécutez cette requête (SELECT a.playerid,a.pla_lname,pla_fname,b.teamname), sélectionnez simplement de ce tableau (de joueurs une), sélectionnez également de ce tableau (équipe b) où le premier associe à la seconde de cette manière (sur a.teamid=b.teamid).
En ce qui concerne les différents types de jointures (gauche, droite, Croix, naturelles, interne, externe) tout cela dépend de quels documents vous voulez retourné si il ne sont pas correspondance lignes dans les tables. Plutôt que d'écrire un essai page 3 sur comment ces travaux, Qu'ill vous invite à créer des tables d'un couple avec des lignes qui n'associent pas comme les lignes qui font et jouent avec la syntaxe de requête.
Dans mon code, j'utilise pratiquement jamais rejoindre (il y a des fois, mais ses rares). 9 fois de 10, j'ai besoin de 1 des 2 choses : un ensemble spécifique de toutes les tables impliquées qui sont associés liés juste titre, pour le second exemple fonctionne comme prévu et d'une manière stable. À l'aide d'une jointure dans le code, comme cela peut conduire à des lignes renvoyées qui ne sont pas associés à la table primaire et cela signifie que vous tirent des données que vous n'avez pas besoin, qui à son tour pourrait se gâcher les structures de données dans votre code (telles que tableaux associatifs tenant des éléments supplémentaires qui à leur tour pourraient fournir un enregistrement fantôme avec aucun id primaire). Ou qu'il faut effectuer une sorte de travail sur chaque ligne dans une table et ces cas, selon la taille de la table, le malade soit juste tirer le tout en une fois ou mal itérer sur chaque dossier à un endroit dans mon code. De toute façon, theres aucun besoin d'une jointure.
Je vais énoncer, si vous le n'avez pas remarqué, Im quelque chose d'un nazi de code. Cela n'applique pas seulement à l'aspect de mon code, mais à la façon dont il fonctionne. Toutes les tables de ma base de données ont les appareils construits Association, j'ai tendance à écrire tout naturellement des tables normalisées sans vraiment y penser. Ce que cela signifie est si il y a des lignes dans une table qui ne sont pas associés à un autre, d'une certaine façon sa parce qu'il n'y a aucune relation entre les deux. Si deux table ont-ils des associations et sont rangées dans l'une qui ne sont pas associées à l'autre, cela signifie que quelqu'un a été jouer avec mon code ou de parler à mon db d'une autre base de code et que les données est entrée soit erroné ou pure et simple n'appartient pas il. Je dois payé double mon taux horaire pour corriger les autres ordures des peuples, afin que mes employeurs habituellement ne laissera personne près de mon travail. Dans les deux cas, s'il y a des données dans mes bases de données qui n'appartient pas et n'est pas associé à droite, mon propre code sera tirez pas les enregistrements de toute façon.
- mindfullsilence
- Professor


- Inscription: Aoû 04, 2008
- Messages: 846
- Status: Offline
this213 a écrit:
JOIN comme il dit, exécutez cette requête (SELECT a.playerid,a.pla_lname,pla_fname,b.teamname), sélectionnez simplement de ce tableau (de joueurs une), sélectionnez également de ce tableau (équipe b) où le premier associe à la seconde de cette manière (sur a.teamid=b.teamid).
Vous n'avez aucune idée comment utile que déclaration était - essayez de trouver tout aussi concis que sur le net, pas une tâche facile. Merci un million.
this213 a écrit:
Dans mon code, j'utilise pratiquement jamais rejoindre (il y a des fois, mais ses rares). 9 fois de 10, j'ai besoin de 1 des 2 choses : un ensemble spécifique de toutes les tables impliquées qui sont associés liés juste titre, pour le second exemple fonctionne comme prévu et d'une manière stable. À l'aide d'une jointure dans le code, comme cela peut conduire à des lignes renvoyées qui ne sont pas associés à la table primaire et cela signifie que vous tirent des données que vous n'avez pas besoin, qui à son tour pourrait se gâcher les structures de données dans votre code (telles que tableaux associatifs tenant des éléments supplémentaires qui à leur tour pourraient fournir un enregistrement fantôme avec aucun id primaire). Ou qu'il faut effectuer une sorte de travail sur chaque ligne dans une table et ces cas, selon la taille de la table, le malade soit juste tirer le tout en une fois ou mal itérer sur chaque dossier à un endroit dans mon code. De toute façon, theres aucun besoin d'une jointure.
Je vais énoncer, si vous le n'avez pas remarqué, Im quelque chose d'un nazi de code. Cela n'applique pas seulement à l'aspect de mon code, mais à la façon dont il fonctionne. Toutes les tables de ma base de données ont les appareils construits Association, j'ai tendance à écrire tout naturellement des tables normalisées sans vraiment y penser. Ce que cela signifie est si il y a des lignes dans une table qui ne sont pas associés à un autre, d'une certaine façon sa parce qu'il n'y a aucune relation entre les deux. Si deux table ont-ils des associations et sont rangées dans l'une qui ne sont pas associées à l'autre, cela signifie que quelqu'un a été jouer avec mon code ou de parler à mon db d'une autre base de code et que les données est entrée soit erroné ou pure et simple n'appartient pas il. Je dois payé double mon taux horaire pour corriger les autres ordures des peuples, afin que mes employeurs habituellement ne laissera personne près de mon travail. Dans les deux cas, s'il y a des données dans mes bases de données qui n'appartient pas et n'est pas associé à droite, mon propre code sera tirez pas les enregistrements de toute façon.
Je vais énoncer, si vous le n'avez pas remarqué, Im quelque chose d'un nazi de code. Cela n'applique pas seulement à l'aspect de mon code, mais à la façon dont il fonctionne. Toutes les tables de ma base de données ont les appareils construits Association, j'ai tendance à écrire tout naturellement des tables normalisées sans vraiment y penser. Ce que cela signifie est si il y a des lignes dans une table qui ne sont pas associés à un autre, d'une certaine façon sa parce qu'il n'y a aucune relation entre les deux. Si deux table ont-ils des associations et sont rangées dans l'une qui ne sont pas associées à l'autre, cela signifie que quelqu'un a été jouer avec mon code ou de parler à mon db d'une autre base de code et que les données est entrée soit erroné ou pure et simple n'appartient pas il. Je dois payé double mon taux horaire pour corriger les autres ordures des peuples, afin que mes employeurs habituellement ne laissera personne près de mon travail. Dans les deux cas, s'il y a des données dans mes bases de données qui n'appartient pas et n'est pas associé à droite, mon propre code sera tirez pas les enregistrements de toute façon.
Il ressemble beaucoup comment mon instructeur a écrit sa base de données pour ce projet. Chaque table est associé de quelque manière à une autre table et tous les tableaux sont reliés ensemble par le biais de clés primaires et étrangères. J'encore avoir un peu de difficulté à comprendre les bases de données, ou les clés primaires et étrangères en général mais obtiens lentement.
Sonne comme youve a acquis une quantité significannot de respect à votre lieu de travail par le biais de votre flux de travail - nécessité bien que parler un peu et de voir si vous ne pouvez pas m'apprendre une chose ou deux, Id est vraiment intéressé à entendre la manière dont vous structurez tout.
Use your words like arrows to shoot toward your goal.
- mindfullsilence
- Professor


- Inscription: Aoû 04, 2008
- Messages: 846
- Status: Offline
OK, j'ai un pour vous qui semble que je ne peux pas comprendre.
J'ai une table appelée new_player_temp qui stocke des informations sur un nouveau inscrit. Elle détient tous les mêmes informations que mon tableau joueur sauf il n'a aucun colonne playerid ou teamid.
Sa signifie contenir les nouveaux inscrits jusqu'à ce que l'administrateur se connecte et leur assigne une équipe, au point où l'information est supprimée de la table new_player_temp et ajoutée à la table du joueur.
Pour ce faire, j'ai besoin d'obtenir toutes les colonnes sur un nom particulier dans la table new_player_temp, ainsi que tous les teamids et les team_names de la table de l'équipe. De cette façon, je peux seulement créer un menu déroulant basé sur les noms de l'équipe de la table de l'équipe.
Celui-ci m'échappe parce que Im n'obtenir qu'une seule ligne de mon tableau de new_player_temp et de toutes les lignes de la table de mon équipe, et ils n'ont aucune corrélation les unes aux autres. Je crois que j'ai besoin d'une jointure en l'occurrence...et après des recherches sur le passé couple jours je crois que j'ai besoin d'un RIGHT JOIN ou LEFT JOIN. J'ai réussi à obtenir des informations de deux tables, mais il a fini par ce que je considère pour être un « CROSS JOIN » et il y avait 6 lignes extensibles avec les mêmes informations de la ligne new_player_temp, combinée avec une colonne supplémentaire pour chaque team_name de la colonne de l'équipe.
De toute façon, pour illustrer une fois de plus, Voici mes tableaux :
Et mon résultat souhaité (pas vraiment ce que cela est censé pour ressembler à un nombre variable de lignes) :
C'est aussi bon que je peux visualiser à quoi ressemblerait le résultat. Ne semble pas prête à venir à travers les exemples de google. Si elle se comme cela...sa va être un PHP, l'analyse de cauchemar, mais au moins je peux comprendre ce point.
J'ai une table appelée new_player_temp qui stocke des informations sur un nouveau inscrit. Elle détient tous les mêmes informations que mon tableau joueur sauf il n'a aucun colonne playerid ou teamid.
Sa signifie contenir les nouveaux inscrits jusqu'à ce que l'administrateur se connecte et leur assigne une équipe, au point où l'information est supprimée de la table new_player_temp et ajoutée à la table du joueur.
Pour ce faire, j'ai besoin d'obtenir toutes les colonnes sur un nom particulier dans la table new_player_temp, ainsi que tous les teamids et les team_names de la table de l'équipe. De cette façon, je peux seulement créer un menu déroulant basé sur les noms de l'équipe de la table de l'équipe.
Celui-ci m'échappe parce que Im n'obtenir qu'une seule ligne de mon tableau de new_player_temp et de toutes les lignes de la table de mon équipe, et ils n'ont aucune corrélation les unes aux autres. Je crois que j'ai besoin d'une jointure en l'occurrence...et après des recherches sur le passé couple jours je crois que j'ai besoin d'un RIGHT JOIN ou LEFT JOIN. J'ai réussi à obtenir des informations de deux tables, mais il a fini par ce que je considère pour être un « CROSS JOIN » et il y avait 6 lignes extensibles avec les mêmes informations de la ligne new_player_temp, combinée avec une colonne supplémentaire pour chaque team_name de la colonne de l'équipe.
De toute façon, pour illustrer une fois de plus, Voici mes tableaux :
PHP Code: [ Select ]
team Table
________________________
| teamid | team_name |
------------------------
| 1 | tigers |
------------------------
| 2 | bears |
------------------------
new_player_temp Table
_________________________
| pla_lname | pla_fname |
-------------------------
| bob | goober |
-------------------------
________________________
| teamid | team_name |
------------------------
| 1 | tigers |
------------------------
| 2 | bears |
------------------------
new_player_temp Table
_________________________
| pla_lname | pla_fname |
-------------------------
| bob | goober |
-------------------------
- team Table
- ________________________
- | teamid | team_name |
- ------------------------
- | 1 | tigers |
- ------------------------
- | 2 | bears |
- ------------------------
- new_player_temp Table
- _________________________
- | pla_lname | pla_fname |
- -------------------------
- | bob | goober |
- -------------------------
Et mon résultat souhaité (pas vraiment ce que cela est censé pour ressembler à un nombre variable de lignes) :
PHP Code: [ Select ]
________________________________________________
| pla_lname | pla_fname | teamid | team_name |
------------------------------------------------
| bob | goober | 1 | tigers |
------------------------------------------------
| | | 2 | bears |
------------------------------------------------
| pla_lname | pla_fname | teamid | team_name |
------------------------------------------------
| bob | goober | 1 | tigers |
------------------------------------------------
| | | 2 | bears |
------------------------------------------------
- ________________________________________________
- | pla_lname | pla_fname | teamid | team_name |
- ------------------------------------------------
- | bob | goober | 1 | tigers |
- ------------------------------------------------
- | | | 2 | bears |
- ------------------------------------------------
C'est aussi bon que je peux visualiser à quoi ressemblerait le résultat. Ne semble pas prête à venir à travers les exemples de google. Si elle se comme cela...sa va être un PHP, l'analyse de cauchemar, mais au moins je peux comprendre ce point.
Use your words like arrows to shoot toward your goal.
- this213
- Guru


- Inscription: Mar 01, 2004
- Messages: 1242
- Loc: ./
- Status: Offline
OK, j'ai quelques question pour vous :
1. Pourquoi ont même un « temp » distincte de table au lieu de simplement définir un statut champ dans la table des joueurs - ou, mieux encore, faire leur teamid = 0 ? Non cela rendre la vie plus facile ?
2. Il me semble vous retrouver avec une liste de joueurs non assignés, avec leur propre liste des équipes disponibles. Compte tenu de cela, pourquoi ne pas juste extraire les données de l'équipe et de le stocker dans un tableau qui vous réutiliser ensuite pour chaque baisse vers le bas. C'est exactement le genre de chose que je parlais quand j'ai dit qu'un grand nombre de fois que vous venez veulent toutes les données dans une table donnée de toute façon. Si vous faites quelque chose comme :
Les équipes et les joueurs sont maintenant dans leurs propres réseaux. Si vous voulez juste récupérer données joueur un à la fois, vous pourriez faire que trop, mais vous devez seulement saisir les données de l'équipe une fois, et qui rend votre code plus efficace. Theres aucun cauchemar d'analyse ici et presque tous ceux qui peuvent lire PHP peuvent voir exactement ce qui est en cours. Lorsque vous assignez un joueur donné à une équipe, vous modifiez juste l'id de leur équipe. Vous pourrait aussi faire un champ distinct « statut » dans ce tableau pour montrer que theyd n'été affecté, mais il y vraiment aucun besoin de le faire. print_r() que ces deux tableaux et vous pouvez voir exactement ce que vous devez faire pour obtenir à chaque élément, itll être quelque chose comme :
1. Pourquoi ont même un « temp » distincte de table au lieu de simplement définir un statut champ dans la table des joueurs - ou, mieux encore, faire leur teamid = 0 ? Non cela rendre la vie plus facile ?
2. Il me semble vous retrouver avec une liste de joueurs non assignés, avec leur propre liste des équipes disponibles. Compte tenu de cela, pourquoi ne pas juste extraire les données de l'équipe et de le stocker dans un tableau qui vous réutiliser ensuite pour chaque baisse vers le bas. C'est exactement le genre de chose que je parlais quand j'ai dit qu'un grand nombre de fois que vous venez veulent toutes les données dans une table donnée de toute façon. Si vous faites quelque chose comme :
Code: [ Select ]
$teams = array();
$result = mysql_query('SELECT * FROM teams');
while( $row = mysql_fetch_assoc($result) ){
$team_id = $row['teamid'];
$teams[$team_id] = $row;
}
$players = array();
$qual = "WHERE teamid='0'";
$result = mysql_query('SELECT * FROM players $qual');
while( $row = mysql_fetch_assoc($result) ){
$player_id = $row['playerid'];
$players[$player_id] = $row;
}
$result = mysql_query('SELECT * FROM teams');
while( $row = mysql_fetch_assoc($result) ){
$team_id = $row['teamid'];
$teams[$team_id] = $row;
}
$players = array();
$qual = "WHERE teamid='0'";
$result = mysql_query('SELECT * FROM players $qual');
while( $row = mysql_fetch_assoc($result) ){
$player_id = $row['playerid'];
$players[$player_id] = $row;
}
- $teams = array();
- $result = mysql_query('SELECT * FROM teams');
- while( $row = mysql_fetch_assoc($result) ){
- $team_id = $row['teamid'];
- $teams[$team_id] = $row;
- }
- $players = array();
- $qual = "WHERE teamid='0'";
- $result = mysql_query('SELECT * FROM players $qual');
- while( $row = mysql_fetch_assoc($result) ){
- $player_id = $row['playerid'];
- $players[$player_id] = $row;
- }
Les équipes et les joueurs sont maintenant dans leurs propres réseaux. Si vous voulez juste récupérer données joueur un à la fois, vous pourriez faire que trop, mais vous devez seulement saisir les données de l'équipe une fois, et qui rend votre code plus efficace. Theres aucun cauchemar d'analyse ici et presque tous ceux qui peuvent lire PHP peuvent voir exactement ce qui est en cours. Lorsque vous assignez un joueur donné à une équipe, vous modifiez juste l'id de leur équipe. Vous pourrait aussi faire un champ distinct « statut » dans ce tableau pour montrer que theyd n'été affecté, mais il y vraiment aucun besoin de le faire. print_r() que ces deux tableaux et vous pouvez voir exactement ce que vous devez faire pour obtenir à chaque élément, itll être quelque chose comme :
Code: [ Select ]
foreach( $players as $player_id -> $player_data ){
$player_team_id = $player_data['teamid'];
$team_name = $teams[$player_team_id]['team_name'];
}
$player_team_id = $player_data['teamid'];
$team_name = $teams[$player_team_id]['team_name'];
}
- foreach( $players as $player_id -> $player_data ){
- $player_team_id = $player_data['teamid'];
- $team_name = $teams[$player_team_id]['team_name'];
- }
- mindfullsilence
- Professor


- Inscription: Aoû 04, 2008
- Messages: 846
- Status: Offline
Totalement ferait de cette manière, et même mis en doute mon instructeur sur sa méthode et le raisonnement derrière elle, environ une semaine, il y a pourquoi nous avions besoin d'un tableau distinct pour les nouveaux registres. Il n'a pas une réponse claire pour moi et malheureusement c'est comment il veut que le programme d'installation de la base de données. J'aimerais bien ajouter uniquement les joueurs dans la table des joueurs plutôt que d'avoir la table distincte, et chaque fois que j'avais besoin d'assigner des joueurs, que je pouvais faire seulement une requête simple de trouver tous les joueurs avec la teamid = null.
Cependant, Im deviner je peux faire 2 requêtes à la base de données définie pour séparer les variables à en tirer à chaque table, certainement seront coupés sur ma confusion avec le faire tout en une seule requête. HADNT pensé que.
Cependant, Im deviner je peux faire 2 requêtes à la base de données définie pour séparer les variables à en tirer à chaque table, certainement seront coupés sur ma confusion avec le faire tout en une seule requête. HADNT pensé que.
Use your words like arrows to shoot toward your goal.
Page 1 sur 1
Pour répondre à ce sujet, vous devez vous connecter ou vous enregistrer. Il est gratuit.
Afficher de l'information
- Total des messages de ce sujet: 8 messages
- Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 117 invités
- Vous ne pouvez pas poster de nouveaux sujets
- Vous ne pouvez pas répondre aux sujets
- Vous ne pouvez pas éditer vos messages
- Vous ne pouvez pas supprimer vos messages
- Vous ne pouvez pas joindre des fichiers
