0

ID の名前を出力するために、配列の結果を別のテーブル ID と結合することは可能ですか?

これは配列の出力です: Array ( [0] => 3 [1] => 1 [2] => 2 )

これはmysqlです:

SELECT * 
FROM 
    meet 
    INNER JOIN location 
    ON meet.meetLoc = location.locID 
    LEFT JOIN team ON meet.meetTeams = team.teamID 
ORDER BY meetDate ASC

これは PHP ですが、"Bob : Sally : Sue" が必要な場合にのみ "3 : 1 : 2" を出力します。

$teams = explode(", ", $row_rsCurMeet['meetTeams']);
$tmp = array();
foreach ($teams as $team)
$tmp[] = $team;
echo implode('  :  ',$tmp);

私もこれを試しましたが、「ボブ:ボブ:ボブ」が返されます

$team_id = $row_rsCurMeet['teamID'];    
$team_name = $row_rsCurMeet['teamName'];
$team = $row_rsCurMeet['teamName'];
$teams = explode(", ", $row_rsCurMeet['meetTeams']);
foreach ($teams as $key => $value) {
$key = $team_id;
$value = $team_name;
print_r ($value);
}

何かご意見は?壁にぶつけて頭が痛い。ありがとう!

SAMPLE DATA

Table meet             Table  team
meetID  meetTeams      teamID   teamName
1        3, 1, 2         1      Sally
2        2, 3, 1         2      Sue
3        1, 3, 2         3      Bob

位置情報は問題ありませんので無視してください。

4

1 に答える 1

0

あなたの一番の問題は、実際にミーティングをチームに関連付けることができるようにしたい場合に、スキーマを変更する必要があることです。meet.meetTeams のような値を持つ1,2,3と、teams テーブルで意味のある結合を行うことができなくなります。

したがって、私の提案は、このような構造を持つ新しいテーブル(またはそれを呼びたいもの)をmeet.meetTeams優先して、列を完全に削除することですmeetTeams

meetId    teamID
------    ------
  1         1
  1         2
  1         3
  2         1
  2         2
  2         3
etc. 

次に、次のようにクエリします。

SELECT * 
FROM 
    meet 
    INNER JOIN location 
    ON meet.meetLoc = location.locID 
    INNER JOIN meetTeams
    ON meet.meetID = meetTeams.meetID
    INNER JOIN team
    ON meetTeams.teamID = team.teamID 
ORDER BY meet.meetDate ASC

ミーティングとチームを一覧表示するだけで十分な場合は、クエリから場所のテーブルを削除できます。必要なフィールドを返さずに返すことで、返されるフィールドを制限することもできSELECT *ます。

meetIDここで、結果セットを取得して、最初の次元として多次元配列に読み込む必要がある場合があります。これは簡単です。次のようになります。

$meet_array = array()
while ($row = [YOUR PHP TO RETRIEVE ROW ARRAY FROM RESULT SET]) {
   $meet_array[$row['meetID']] = $row;
}

foreach ($meet_array as $meet_id => $meet_data) {
    echo 'Meet ID: ' . $meet_id . ' <br />';
    foreach ($meet_data as $data) {
        echo 'Team ID: ' . $data['teamID'] . ', Team Name: ' . $data['teamName'] . ' : ';
    }
    echo '<br />';
}
于 2012-12-14T17:38:39.613 に答える