SQL variabelen afhankelijk van gegevens in tabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco ----

Marco ----

22/06/2012 12:08:45
Quote Anchor link
Hallo allemaal,

Weet iemand of het mogelijk is om bepaalde velden van een tabel wel of niet uit te lezen, afhankelijk van of er iets in staat?

Voorbeeld situatie:

Ik heb een tabel met onder andere voorletters, tussenvoegsel, en achternaam in aparte velden.
Voorletters en tussenvoegsel kunnen leeg zijn. Is het nu mogelijk om de waarden aan elkaar te koppelen zodat ik in één keer de hele naam uit kan lezen? (rekening houdend met het feit dat voorletters en tussenvoegsels niet ingevuld hoeven zijn).

Als dat kan lijkt me dat een mooiere, overzichtelijkere oplossing dan controles uitvoeren met PHP.

Als dit mogelijk is dan zou ik echt niet weten waar ik op moet zoeken. Vandaar mijn vraag hier.
Gewijzigd op 22/06/2012 12:13:23 door Marco ----
 
PHP hulp

PHP hulp

25/04/2024 00:15:46
 
Jeroen VD

Jeroen VD

22/06/2012 12:20:12
Quote Anchor link
waarom zo moeilijk willen doen? wannneer een gebruiker geen tussenvoegsel invult, zorg je dat er in de database ook niets komt te staan (dus ook geen NULL). wanneer je dan alle velden echot, krijg je dus gewoon de volledige naam die is ingevuld.
 
Marco ----

Marco ----

22/06/2012 12:35:45
Quote Anchor link
Bedankt voor je reactie.
Als het mogelijk is wil ik alsnog graag weten hoe het zou kunnen. Al is het maar om mijn kennis te verrijken.
Wat je zegt klopt. Ik zou inderdaad alle velden kunnen echoën. Maar wat is dan het verschil tussen 'één' veld echoën die dan in SQL is gemaakt en alle velden echoën in PHP?
 
Wouter J

Wouter J

22/06/2012 12:36:15
Quote Anchor link
Quote:
zorg je dat er in de database ook niets komt te staan (dus ook geen NULL)

Dat kan niet, NULL = niks en niks = NULL. Niks in een dB kan niet, NULL is het toppunt van niks.

Je zal het veld dus op DEFAULT NULL moeten instellen.
 
- SanThe -

- SanThe -

22/06/2012 13:07:12
 
Jeroen Jansen

Jeroen Jansen

22/06/2012 13:14:06
Quote Anchor link
EN als je de naam op wilt bouwen in SQL zou je volgens mij ook de volgende code kunnen gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
IF(voorletter IS NULL,
   IF(tussenvoegsel IS NULL,
      naam,
      concat(tussenvoegsel, ' ', naam)
     ),
   IF(tussenvoegsel IS NULL,
      concat(voorletter, ' ', naam),
      concat(voorletter, ' ', tussenvoegsel, ' ', naam)
     )
  )
Gewijzigd op 22/06/2012 13:14:59 door Jeroen Jansen
 
Marco ----

Marco ----

22/06/2012 13:16:01
Quote Anchor link
Bedankt!

Zou onderstaande query dan logisch zijn? Of maakt het allemaal niet zo veel uit?

SELECT CONCAT(voorletters, tussenvoegsel, en achternaam) AS klantnaam

Toevoeging op 22/06/2012 13:17:28:

Bedankt voor het voorbeeld, Jeroen.
 
- SanThe -

- SanThe -

22/06/2012 13:17:52
Quote Anchor link
SELECT CONCAT(voorletters, ' ', tussenvoegsel, ' ',achternaam) AS klantnaam
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

22/06/2012 14:21:23
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
SELECT LTRIM(CONCAT(voorletters, ' ',
    LTRIM(CONCAT(tussenvoegsel, ' ', achternaam)))) AS klantnaam

Edit: de haakjes stonden verkeerd
Gewijzigd op 22/06/2012 14:45:51 door Ger van Steenderen
 
Marco ----

Marco ----

22/06/2012 14:34:43
Quote Anchor link
Zonder LTRIM lijkt het ook goed te werken. Nu is er maar één spatie tussen voor- en achternaam, ook als er geen tussenvoegsel is. In ieder geval goed om te weten en in de gaten te houden. Bedankt.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

22/06/2012 14:52:54
Quote Anchor link
Heb het even aangepast, was niet helemaal goed.
LTRIM voorkomt 2 spaties voor de achternaam als er geen voorletters en tussenvoegsel zijn ingevuld, en inderdaad de extra spatie tussen voorletters en achternaam als er geen tussenvoegsel is ingevuld.
 



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.