Ich habe Schwierigkeiten bei der Ausgabe der richtigen Informationen aus meiner SELECT-Abfrage. Das sind Tische, von denen ich ziehe.PHP MySQL komplexen Beitritt
Ich habe eine Liste der Spiele:
SPIELE
id home_team away_team
1 1 2
2 3 4
3 12 16
Wo diese HOME_TEAM und AWAY_TEAM IDs passen bis zu:
TEAMS
id name
1 Team A
2 Team B
3 Team C
Zusätzlich habe ich eine Parlays Tisch und Parlay Spiele. Parlay Games verweist auf die Parlays-Tabelle.
Parlays
id userid bettingsiteid wager odds
1 44 1 1000 2.0
2 45 5 1500 2.3
3 12 14 2000 1.8
PARLAY SPIELE
id parlayid gameid betinfo
1 1 1 Home Win
2 1 2 Away Win
3 1 5 Home Win
4 2 18 Home Win by 2 goals
Das ist, was ich in meinem letzten Tisch sehen mag:
Parlay ID Home Team Away Team User Wager Odds
Team A Team B
1 Team C name of teams.id = 4 Ridge Robinson 1000 2.0
name of teams.id = 12 name of teams.id = 16
-------------------------------------------------------------- (<tr> border)
Team C name of teams.id = 4
2 name of teams.id = x name of teams.id = x
-------------------------------------------------------------- (<tr> border)
Ich hoffe, das macht Sinn. Ich möchte nur die Parlay-ID und dann den Namen jeder Heim- und Auswärtsmannschaft in der Parlay.
Dies ist meine Auswahlabfrage ich derzeit versuche:
SELECT
u.first_name AS 'User First Name',
u.last_name AS 'User Last Name',
u.id AS 'User ID',
ht.name AS 'Home Team',
away.name AS 'Away Team',
p.wager AS 'Wager',
p.odds AS 'Odds',
pg.parlayid AS 'Parlay ID',
pg.betinfo AS 'Bet Info',
pg.gameid AS 'Game ID',
g.date AS 'Game Date',
b.betting_site_name AS 'Betting Site'
FROM parlays p
JOIN parlaygames pg ON p.id = pg.parlayid
JOIN games g ON pg.gameid = g.id
JOIN teams ht ON g.home_team = ht.id
JOIN teams away ON g.away_team = away.id
JOIN users u ON u.id = p.userid
JOIN bonuses b ON p.bettingsiteid = b.id
ORDER BY
pg.parlayid,
pg.gameid
Und das ist mein Tabellencode:
<table class="table table-striped">
<tr>
<th>User Name</th>
<th>Date</th>
<th>Betting Site</th>
<th>Home Team</th>
<th>Away Team</th>
<th>Wager</th>
<th>Odds</th>
<th>Manager</th>
<th>Bet Info</th>
<th>Success</th>
<th>Edit</th>
</tr>
<?php
while($row = $result->fetch_array()) {
$hometeams = implode(' ',$row['Home Team']);
$output = '<tr>';
$output .= '<td><a href="userprofile.php?id='.$row['User ID'].'">'.$row['User First Name'].' '.$row['User Last Name'].'</a></td>';
$output .= '<td>'.$row['Game Date'].'</td>';
$output .= '<td>'.$row['Betting Site'].'</td>';
$output .= '<td>'.$hometeams.'</td>';
$output .= '<td>'.$row['Away Team'].'</td>';
$output .= '<td>'.$row['Wager'].' kr</td>';
$output .= '<td>'.$row['Odds'].'</td>';
$output .= '<td><a href="managerprofile.php?id='.$row['Manager ID'].'">'.$row['Manager First Name'].' '.$row['Manager Last Name'].'</a></td>';
$output .= '<td>'.$row['Bet Info'].'</td>';
$output .= '<td>'.$row['Success'].'</td>';
$output .= '<td><a href="edit_userbet.php?id='.$row['User ID'].'&betsite='.$row['Betting ID'].'&gameid='.$row['Game ID'].'&wager='.$row['Wager'].'&odds='.$row['Odds'].'&betinfo='.$row['Bet Info'].'" class="btn btn-default btn-sm">Edit</a></td>';
$output .= '</tr>';
echo $output;
}
?>
</table>
Aber das ist sehr falsch, wie ich eine Tabelle immer bin, das zeigt (dumbed unten)
Parlay ID Home Team Away Team Wager Odds
1 1 1 1000 2.0
1 2 2 1000 2.0
1 3 3 1000 2.0
-------------------------------------------------------------- (<tr> border)
ich weiß, das ist, weil ich $ GameID eingefügt, aber ich bin nicht sicher, wie das Haus und weg Tee zu bekommen M Namen pro Spiel-ID, ohne $ Spiel pro Zeile zu referenzieren.
Hat jemand irgendwelche Vorschläge?
EDIT Einer der Gründe dafür, dass ich die Tabelle wie folgt organisiere ist da, in meinem parlays Tisch, zusätzlich zu dem nur der Parlay-ID und Heimelf/auswärtig ... ich eine Wette auch haben und Eine Quote für jeden Satz aufgeführt. Vielleicht hat jemand eine bessere Vorstellung von einer Fremdschlüsselbeziehung, die besser funktionieren und dieses Problem auf diese Weise lösen könnte?
** BEARBEITEN # 2 ** Ich habe meine DB-Tabellenstruktur geändert, brauche aber immer noch Hilfe bei der Anzeige meiner Frontend-Tabelle!
Ihre Tabellenstruktur von Parlays ist schlechtes Design. Eine kommagetrennte Liste gegenüber einer tatsächlichen Tabelle eines kombinierten Primärschlüssels (ParlayID, GameID) zu haben und jedes einzelne Spiel als eigene Zeile mit dem entsprechenden Parlay zu haben. DANN sollte deine Abfrage funktionieren .. andernfalls musst du dich den explodierten Werten jeder Parlay-ID anschließen. – DRapp
DRapp ... Ich kann verstehen, dass dies ein schlechtes Design sein kann. Ich bin sicherlich offen für Vorschläge. Würde es Ihnen etwas ausmachen, etwas mehr auf Ihren Vorschlag zu erweitern? Ich verstehe nicht ganz, wie ich es so einrichten kann, weil ich nicht sicher bin, welche Partien oder wie viele Partien gespielt werden. Vielleicht verstehe ich die Logik dahinter nicht? –