Met de volgende SQL krijg je de 5 namen die meer dan 1 x voorkomen, met hun waarde.
Met PHP kan je ze dan samenvoegen.
SELECT
s.naam, s.waarde
FROM
show AS s,
(SELECT waarde, COUNT(*) FROM show GROUP BY waarde HAVING COUNT(*) > 1) AS c
WHERE
s.waarde = c.waarde
ORDER BY
s.waarde, s.naam
Weer iets nieuws geleerd, beide hartstikke bedankt! Zo simpel kan het dus zijn.
[size=xsmall]Toevoeging op 28/12/2014 14:46:41:[/size]
Ik gebruik nu de suggestie van Ger werkt zoals ik wil.
Kan ik de waardes ook apart aanroepen want ik wil per waarde een a href eromheen zetten.
Nu krijg ik direct de waardes in 1 array zoals
array(
[waarde] => nick1,nick2
)
Als ik dan $i['waarde'] aanroep dan krijg ik gelijk nick1,nick2 terug.
Want dan kan ik het niet naar de specifieke pagina linken.
Ja ik wil ze uit elkaar, in ieder geval moeten ze beide een apart a href krijgen.
Als ik nu een a href geef is het geen valid url meer want dan krijg je phphulp.php?id=nick1,nick1
Dit moet zijn, phphulp.php?id=nick1 phphulp.php?id=nick2
<?php
// het is zinloos om prepared statements te gebruiken zonder parameters
if($s = $db->query('SELECT
waarde,
GROUP_CONCAT(DISTINCT naam ORDER BY naam) namen
FROM
show
GROUP BY waarde
HAVING COUNT(*) > 1') {
while ($row = $s->fetch(PDO::FETCH_ASSOC) { //voor mysqli: $row = $s->fetch_assoc()
$c = '';
$nicks = explode(',', $row['namen']);
foreach($nicks as $nick) {
echo $c . '<a href="http://example.com/test.php?id=' .
$nick . '">' . $nick . '</a>';
$c = ', ';
}
echo ' hebben dezelfde waarde(' . $row['waarde'] . ')<br>';
}
}
?>