Toon posts:

[MySQL] ORDER BY domeingedeelte van e-mailadres

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben al aan het zoeken geweest op Google en MySQL.com maar ik kan maar geen oplossing vinden voor het volgende.

Ik heb een tabel in een MySQL-db met zo'n 500 e-mailadressen + voornaam + achternaam + id. Vier kolommen dus.

Nu kan een gebruiker al deze e-mailadressen bekijken via een PHP-pagina gesorteerd op drie verschillenden manieren:

1. voornaam, achternaam, e-mailadres
2. achternaam, voornaam, e-mailadres
3. e-mailadres, achternaam, voornaam

Dit is natuurlijk geen enkel probleem, echter wil ik nog 1 andere manier van sorteren toevoegen;

4. (domein van e-mailadres), e-mailadres, achternaam, voornaam

Op deze manier staan alle domeinen bij elkaar.

Weten jullie missschien hoe ik dit voor elkaar krijg in een MYSQL query, op een manier dat ik de computer niet laat vastlopen?
Hoe zet ik zoiets in de ORDER BY / GROUP BY? 8)7

Alvast bedankt _/-\o_

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Je kunt met een subselect het emailadres splitten en daarop een GROUP BY uitvoeren.

* curry684 gaat er even vanuit dat MySQL zoiets basaals wel kan :z

Professionele website nodig?


  • RobzQ
  • Registratie: Februari 2000
  • Laatst online: 21-12-2020

RobzQ

greedy as a pig

Ik denk dat je met een INSTR('foobarbar', 'bar') in combinatie met een SUBSTRING(str FROM pos) een heel eind moet komen...

[edit]
Of kijk hier eens:

SUBSTRING_INDEX(str,delim,count)
Returns the substring from string str before count occurrences of the delimiter delim. If count is positive, everything to the left of the final delimiter (counting from the left) is returned. If count is negative, everything to the right of the final delimiter (counting from the right) is returned:
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
-> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
-> 'mysql.com'

[ Voor 71% gewijzigd door RobzQ op 17-12-2003 16:35 ]

..so be wary of any man who keeps a pig farm..


Verwijderd

curry684 schreef op 17 december 2003 @ 16:32:
Je kunt met een subselect het emailadres splitten en daarop een GROUP BY uitvoeren.

* curry684 gaat er even vanuit dat MySQL zoiets basaals wel kan :z
Ik geloof dat mysql dat niet kan :) Je zult het dus moeten splitsen voor het invoeren in de db

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 00:04

ripexx

bibs

GROUP BY heb je hier iid geval niet voor nodig. Volgens mij kan MySQL ook een regex achtige functie lost laten in de SELECT dus dan kan je daar je selectie op sorteren.

SQL:
1
2
3
4
5
6
7
8
SELECT 
   email,
   achternaam,
   voornaam,
    SUBSTRING_INDEX(email, '@') AS domein
FROM 
   tabel
ORDER BY domein, email, achternaam, voornaam;


Manual reff: http://www.mysql.com/doc/en/String_functions.html ;)

offtopic:
Damm RobzQ

[ Voor 68% gewijzigd door ripexx op 17-12-2003 16:42 . Reden: code-tag fixed, danku ;) ]

buit is binnen sukkel


  • Stamgastje
  • Registratie: April 2003
  • Laatst online: 02-02-2020
Anders zal zoiets ook wel werken:

ORDER BY SUBSTRING([e-mailadres],LOCATE('@',[e-mailadres]))

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 17 december 2003 @ 16:36:
[...]
Ik geloof dat mysql dat niet kan :) Je zult het dus moeten splitsen voor het invoeren in de db
* curry684 plaatst wederom een vinkje bij puntjes om MySQL niet te gebruiken :Y)

Maar idd ik keek even te moeilijk, de substring-selects zijn beter :)

offtopic:
heej Timo wat doe je in mijn tuin ;)

[ Voor 7% gewijzigd door curry684 op 17-12-2003 16:42 ]

Professionele website nodig?


Verwijderd

Topicstarter
Stamgastje schreef op 17 december 2003 @ 16:38:
Anders zal zoiets ook wel werken:

ORDER BY SUBSTRING([e-mailadres],LOCATE('@',[e-mailadres]))
Super!!!!!!

Dank je, dit is precies wat ik zocht!
Pagina: 1