Hi,


create table if not EXISTS trn_partijen(
id int PRIMARY KEY AUTO_INCREMENT,
id_toernooi int not null,
speler1 int not null,
speler2 int not null,
uitslag varchar(1) NOT NULL,
UNIQUE id_toernooi (id_toernooi,speler1,speler2)
);


Ik zou een draaitabel willen van speler1 naar speler2 met de uitslag als waarde, maar ik raak er niet uit.
Zoals je ziet is uitslag een varchar(1) met unieke index op speler1 en speler2

Ik zou dus voor 10 spelers 10 lijnen moeten krijgen met 11 kolommen

Dit is wat ik had maar ver van juist :)
SELECT speler1, speler2, uitslag from trn_partijen group by speler1 order by speler1 

Iemand een idee?

Jan
Natuurlijk. ook Ger :)

Nu nog wat extra berekeningen maar de basis is er. De punten moeten nog uitgerekend worden op sommige niveaus maar ook daar is de basis al.

Nogmaals beiden bedankt.

Jan
Waarschijnlijk heb je nu nog maar één toernooi ingevoerd, want zoals als eerder aangegeven moet je als je de deelnemers per toernooi wilt hebben géén CROSS JOIN meer gebruiken, maar de JOIN dusdanig aanpassen dat alleen de deelnemers van een bepaald toernooi aan elkaar gekoppeld worden, zie mijn eerdere reactie .....
Hoi,

Ik heb mijn code voor een andere pagina gekopieerd en de where uitgebreid.
Als ik verwijs in de where naar uitslag. de originele naam van het veld dan heb ik niet alle ONGESPEELDE partijen. Als ik probeer met score. de nieuwe gecombineerde naam dan krijg ik de melding dat dit veld niet bestaat. nogtans als ik de query uitvoer via dbadmin zie ik een veld score. ik heb ook geprobeerd met te verwijzen naar de tabel t. u. of r. er voor.

U staat voor uitgesteld, A voor afgebroken ?, voor onbekend en . komt uit de query(partij nog niet ingegeven).

Wat doe ik mis?

Jan
<?php
$query = "
SELECT
t.naam as naam,
t.id as thuis_id,
u.id as uit_id,
CASE WHEN t.id = u.id THEN 'X'
ELSE COALESCE(r.uitslag, '.') END as score,
u.naam as tegenstander
FROM
trn_spelers t
CROSS JOIN
trn_spelers u
LEFT JOIN
trn_partijen r
ON t.id = r.speler1
AND u.id = r.speler2
AND r.id_toernooi=t.id_toernooi
AND r.id_toernooi=u.id_toernooi
AND r.id_toernooi=" . $toernooi . "
where t.id_toernooi=". $toernooi . " and u.id_toernooi = ". $toernooi . " and uitslag in ('U', 'A', '.', '?')
ORDER BY thuis_id, uit_id
";
$spelers=GetPlayers($con);

$result = mysqli_query($con, $query);
while ($row = mysqli_fetch_assoc($result)) {
if (!(fIsPlayerABye($row['naam'])) && !(fIsPlayerABye($row['tegenstander']))){
echo '<div class="partij"><span>' . $row['naam'] .'</span>';
echo ' - ';
echo '<span>' . $row['tegenstander'] .'</span></div>' . PHP_EOL;
}
}
?>
Je kan in de where niet refereren aan een alias.
Je kan wel r.uitslag IS NULL gebruiken.
Ik had wel null geprobeerd maar niet 'is null' bedankt maar weer.

Jan

Reageren