Naam 1x tonen uit 4 kolommen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Henrik Maartens

Henrik Maartens

22/09/2015 08:55:36
Quote Anchor link
Dames & Heren,

Ik wil uit een sql database van alle voorkomende namen 1x tonen, echter er moet gekeken worden in 4 kolommen;

ID scheids1 scheids2 scheids3 scheids4
1 piet henk ramon frits
2 ryan joop henk frits
3 frits robert henk piet
4 ryan joop henk frits

zou de volgende resultaten moeten geven:

piet henk ramon frits ryan joop robert

ik heb onderstaande werkend voor 1 kolom. Echter hoe zorg ik er voor dat er 1 lijst komt met alle namen (1x) uit de 4 kolommen?


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
      include"db.inc.php";
 
$q = $_GET['q'];

$result = mysql_query("

SELECT DISTINCT scheids1 FROM wedstrijden
WHERE waar='thuis'
ORDER BY scheids1"
);

      while ($row=mysql_fetch_array($result)){
    
       echo ("$row[scheids1]<br>");

}

      ?>
Gewijzigd op 22/09/2015 08:57:59 door Henrik Maartens
 
PHP hulp

PHP hulp

16/11/2024 08:48:20
 
- Ariën  -
Beheerder

- Ariën -

22/09/2015 10:05:40
Quote Anchor link
Ik denk dat het een betere zaak is om de datastructuur te normaliseren. Als je velden gaat nummeren ben je fout bezig, en is je datastructuur niet echt schaalbaar. Als je meerdere scheidsrechters hebt, ga je dan steeds je datastructuur onnodig aanpassen?

Een tabel scheidsrechters waarin je de namen van de scheidsrechters zet, met een Auto Incr. ID is een beter idee. Deze ID's koppel je dan met de tabel wedstrijden via een koppeltabel wedstrijden_scheids. Daar staan de ID's van de wedstrijden en de ID's van de scheidsrechters. Zo kan je een wedstrijd dan één tot meerdere scheidsrechters geven.

Met jouw query en code wat je nu hebt, loop je gegarandeerd later tegen problemen aan. Dus omgooien dat roer ;-).
Gewijzigd op 22/09/2015 10:09:05 door - Ariën -
 
Jan de Laet

Jan de Laet

22/09/2015 10:59:09
Quote Anchor link
Wat Aar zegt is absoluut waar en aan te bevelen.
Mocht dit niet mogelijk zijn dan kun je met UNION werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
SELECT scheids1 FROM wedstrijden
   WHERE waar='thuis'
UNION SELECT scheids2 FROM wedstrijden
   WHERE waar='thuis'
UNION SELECT scheids3 FROM wedstrijden
   WHERE waar='thuis'
UNION SELECT scheids4 FROM wedstrijden
   WHERE waar='thuis'

GROUP BY scheids1
Gewijzigd op 22/09/2015 11:00:42 door Jan de Laet
 
Henrik Maartens

Henrik Maartens

22/09/2015 11:49:41
Quote Anchor link
Wat Aar zegt is zeker waar! alleen gezien de omvang van de database voor nu niet haalbaar om het aan te passen. Er staan zeker 1.200 rijen met 4 scheidsrechters.


Jan, bedankt voor je reactie. ik heb dit geprobeerd. En het werkt. hij laat alleen unieke namen zien.
Maar klopt mijn echo dan nog wel?

echo ("$row[scheids1]<br>"); ????
Gewijzigd op 22/09/2015 12:04:53 door Henrik Maartens
 
Jan de Laet

Jan de Laet

22/09/2015 12:19:23
Quote Anchor link
Henrik, Ik denk het wel want de 1e kolomnaam wordt aangehouden. Mocht het niet werken, dan kun je bij iedere regel een ALIAS, bijv "scheids" toepassen en dan werkt het zeker als jij dan $row["scheids"] gebruikt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
SELECT scheids1 AS scheids FROM wedstrijden
   WHERE waar='thuis'
UNION SELECT scheids2 AS scheids FROM wedstrijden
   WHERE waar='thuis'
UNION SELECT scheids3 AS scheids FROM wedstrijden
   WHERE waar='thuis'
UNION SELECT scheids4 AS scheids FROM wedstrijden
   WHERE waar='thuis'

GROUP BY scheids1
 
- Ariën  -
Beheerder

- Ariën -

22/09/2015 12:34:44
Quote Anchor link
Henrik Maartens op 22/09/2015 11:49:41:
Wat Aar zegt is zeker waar! alleen gezien de omvang van de database voor nu niet haalbaar om het aan te passen. Er staan zeker 1.200 rijen met 4 scheidsrechters.

Valt overigens prima om te zetten met een PHP-scriptje, of een flinke SQL-query.
1.200 rijen stelt niks voor voor een database.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.