GROUP BY probleem, denk ik. Hulp nodig!!
Ik heb een problem met deze code.
Ik heb twee tabellen:
1- IMAGES (image_id, image_game)
2- GAMES (games_id, games_game)
(Foto's van wedstrijden). Bijvoorbeeld:
Ik heb 4 foto's van 2 wedstrijden op mijn galerie:
image1 & image2 van game1
image3 & image4 van game2
Dus ik wil als resultaat:
game1 (1,2)
game2 (3,4)
De querry die ik gebruik geeft mij deze twee lijnen:
game1 (1)
game2 (3)
Hij pakt dus alleen 1 image_id (foto) van elke wedstrijd (games_game)
Hier is de code:
Code (php)
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
45
46
47
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
45
46
47
<?php
$sql = "SELECT *, i.image_id, i.image_game
FROM (".ZU_GAMES_TABLE." g)
LEFT JOIN (".IMAGES_TABLE." i) ON (i.image_game = g.zu_games_game)
WHERE zu_games_game LIKE '%$zu_games_team1%' AND zu_games_game LIKE '%$zu_games_team2%'
GROUP BY zu_games_game
ORDER by g.zu_games_date ASC
";
$result = $site_db->query($sql);
$num_rows = $site_db->get_numrows($result);
if (!$num_rows) {
$zu_game_teams_games = "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"4\"><tr><td>No info</td></tr>";
}
else {
$zu_game_teams_games = "<table class=\"head2\" width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"4\">
<tr><td><b>#</b></td>
<td><b>Date</b></td>
<td><b>Game</b></td>
<td><b>Videos</b></td>
</tr>
";
$i = 1;
while ($zu_games_row = $site_db->fetch_array($result)){
$zu_games_date = date("d-m-Y", $zu_games_row['zu_games_date']);
$day = substr($zu_games_row['zu_games_day'], 0, 2);
$image_game2 = "".$zu_games_row['image_id'].", ";
$image_id_videos = substr($image_game2, 0, -2);
$zu_game_teams_games .= "<tr>
<td valign=\"top\" class=\"sortable\"><b>".$i++."</b></td>
<td valign=\"top\">".$day." ".$zu_games_date."</td>
<td valign=\"top\"><a href=\"".$site_sess->url(ROOT_PATH."zu_games.php?zu_games_id=".$zu_games_row['zu_games_id'])."\">".$zu_games_row['zu_games_game']."</a></td>
<td>".$image_id_videos."</td>
</td></tr>
";
}
}
$zu_game_teams_games .= "</table>\n";
$site_template->register_vars("zu_game_teams_games", $zu_game_teams_games);
unset($zu_game_teams_games);
?>
$sql = "SELECT *, i.image_id, i.image_game
FROM (".ZU_GAMES_TABLE." g)
LEFT JOIN (".IMAGES_TABLE." i) ON (i.image_game = g.zu_games_game)
WHERE zu_games_game LIKE '%$zu_games_team1%' AND zu_games_game LIKE '%$zu_games_team2%'
GROUP BY zu_games_game
ORDER by g.zu_games_date ASC
";
$result = $site_db->query($sql);
$num_rows = $site_db->get_numrows($result);
if (!$num_rows) {
$zu_game_teams_games = "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"4\"><tr><td>No info</td></tr>";
}
else {
$zu_game_teams_games = "<table class=\"head2\" width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"4\">
<tr><td><b>#</b></td>
<td><b>Date</b></td>
<td><b>Game</b></td>
<td><b>Videos</b></td>
</tr>
";
$i = 1;
while ($zu_games_row = $site_db->fetch_array($result)){
$zu_games_date = date("d-m-Y", $zu_games_row['zu_games_date']);
$day = substr($zu_games_row['zu_games_day'], 0, 2);
$image_game2 = "".$zu_games_row['image_id'].", ";
$image_id_videos = substr($image_game2, 0, -2);
$zu_game_teams_games .= "<tr>
<td valign=\"top\" class=\"sortable\"><b>".$i++."</b></td>
<td valign=\"top\">".$day." ".$zu_games_date."</td>
<td valign=\"top\"><a href=\"".$site_sess->url(ROOT_PATH."zu_games.php?zu_games_id=".$zu_games_row['zu_games_id'])."\">".$zu_games_row['zu_games_game']."</a></td>
<td>".$image_id_videos."</td>
</td></tr>
";
}
}
$zu_game_teams_games .= "</table>\n";
$site_template->register_vars("zu_game_teams_games", $zu_game_teams_games);
unset($zu_game_teams_games);
?>
Als ik de GROUP BY zu_games_game weghaal, dan krijg ik:
game1 (1)
game1 (2)
game2 (3)
game2 (4)
Alvast bedankt,
Gewijzigd op 01/01/1970 01:00:00 door Sara Z
game1 (1)
game1 (2)
game2 (3)
game2 (4)
Deze array verwerken in een loop om jou gewenste resultaat te krijgen:
game1 (1,2)
game2 (3,4)
Als je per game altijd 2 child records krijgt is het wel te coderen in een query maar wanneer het aantal child records niet vastligt lukt dit niet.
Ik zal straks proberen dan laat ik jou weten over het resultaat.
Groetjes,
Skeex
Gewijzigd op 01/01/1970 01:00:00 door Sara Z
Ik heb gedaan wat je gezegd hebt. Dus de GROUP BY weggehaald en gegevens in een array plaatsen, maar ik weet niet wat ik moet verder doen.
hier is de code:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$array_image_id = array();
while ($zu_games_row = $site_db->fetch_array($result)){
$games_game = $zu_games_row['zu_games_game'];
$image_game_id = $zu_games_row['image_id'];
$array_image_id[$games_game][$image_game_id] = $ids;
while ($zu_games_row = $site_db->fetch_array($result)){
$games_game = $zu_games_row['zu_games_game'];
$image_game_id = $zu_games_row['image_id'];
$array_image_id[$games_game][$image_game_id] = $ids;
Ik heb echt hulp nodig.
Alvast bedankt
Gelieve Niet Bumpen::
Gewijzigd op 01/01/1970 01:00:00 door Sara Z
Je moet nu in een loop de array regel voor regel verwerken om de output te krijgen die jij wenst.
Bedankt John. Ik zal het proberen.
GROUP BY gebruik je alleen in combinatie met Aggregate functies