Ik ben al een tijdje bezig met 2 dezelfde waardes samen te voegen maar heb niet echt veel succes hiermee.

Wat ik wil is dat x aantal waardes met dezelfde waarde samen worden gevoegd.


test   1
asdf   1 
qwerty 2
abc    3 
zzz    1 
poiuyt 2


Deze wil ik samen voegen als ze dezelfde waardes hebben dus moet zijn


test , asdf, zzz hebben dezelfde waarde.
qwerty, poiuyt hebben dezelfde waarde.


En omdat de andere geen zelfde waardes hebben hoeven ze niet ge-echoed worden.
De waardes komen vanuit


$s= "SELECT naam, waarde FROM show";
$test = $db->prepare($s);
$test->execute();
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


Afgezien van de niet ANSI SQL kan dit eenvoudiger:

SELECT
	waarde,
	GROUP_CONCAT(DISTINCT naam ORDER BY naam) namen
FROM
	show
GROUP BY waarde
HAVING COUNT(*) > 1

Ook niet ANSI SQL btw ;-)
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.
Wil je nick1,nick2 in 1 rij krijgen?
Of wil je juist twee rijen met daarin de losse 'nicken'?

Want de GROUP CONCAT() maakt er juist 1 veld van. Wil je dat niet, dan moet je gewoon de query aanpassen.




Uiteraard kan je nick1,nick2 ook wel met de php-functie explode() weer uit elkaar halen, maar dat lijkt mij niet logisch.
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

<a href=phphulp.php?id=$test['waarde']>$test['waarde']</a>

Maar dan wel in één zin, nu krijg ik

nick1,nick2 hebben dezelfde waardes, beide zijn dan 1 url.
[code]<?php
$nicks = explode(',', $test['namen']);
foreach($nicks as $nick) {
echo '<a href="http://example.com/test.php?id=' . $nick . '">' . $nick . '</a><br>';
}
?>
Als ik deze gebruik krijg ik ze nu appart, wel met de juiste links.
Nick1 hebben dezelfde waardes...
Nick2 hebben dezelfde waardes...

Ik wil dit echter als
Nick1, Nick2 hebben dezelfde waardes...

Ik probeer dit deze op te slaan in arrays maar lukt me niet echt.
Vooruit dan:
<?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>';
	}
}
?>

@Ger, heeeeeeel er bedankt voor je moeite! Heb het nu zoals ik uit eindelijk wilde thanks to you!!!

Reageren