MYSQL: op domein grouperen
In mijn database staan referenties in de vorm van websites. Daar wil ik graag op sorteren in een sql query. Punt alleen is dat ik op domeinnaam wil sorteren.
Dit zijn de verschillende URL's die in de database mogelijk zijn:
http://www.website.nl/blaat/test/hmm
http://website.nl/blaat/test/hmm
www.website.nl/blaat/test/hmm
website.nl/blaat/test/hmm
forum.website.nl/blaat/test/hmm
Mijn query zou er dus ongeveer zo uit moeten zien:
SELECT referenties REGEXP() as domein FROM tabel GROUP BY domein
Iemand enig idee?
Het groeperen waar jij op doelt heeft enkel met de presentatie van gegevens te maken en doe je dus in PHP. Sorteer in de query op de domeinnaam en houd vervolgens in PHP in de while loop waarmee je de data fetch een variabele bij met de domeinnaam uit de vorige loop. Als die in deze loop verschilt, heb je dus met een nieuw domein te maken en zul je de naam weer moeten geven. Zo niet, dan hoef je enkel de data van het domein te tonen.
Dus iets als:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$sVorige = '';
while($row = mysql_fetch_assoc($result)) {
if($row['domein'] != $sVorige) {
echo $row['domein'];
$sVorige = $row['domein'];
}
// Echo hier de rest van de gegevens
}
?>
$sVorige = '';
while($row = mysql_fetch_assoc($result)) {
if($row['domein'] != $sVorige) {
echo $row['domein'];
$sVorige = $row['domein'];
}
// Echo hier de rest van de gegevens
}
?>
Bijvoorbeeld zo:
http://site1.eu/link
http://site2.eu/link
http://www.site1.eu/link
en nu alfabetisch sorteren zal niet ervoor zorgen dat alles van site1 bij elkaar zal staan.
@HellRazer: ik zou een extra kolom (of tabel) aanmaken met de domeinnaam erin. Die wordt dan bij het invoegen gesplitst uit de url dmv een regex in php (of mysql)
Nadien kan je heel makkelijk sorteren op domeinnaam..
In dat geval kun je mijn eerder beschreven aanpak toepassen op die nieuwe kolom, en dus daarop sorteren.