Scoutnet vzw

We connect scouts!
Het is momenteel 27 Apr 2024 21:31

Alle tijden zijn UTC + 1 uur




Plaats een nieuw onderwerp Reageren op dit onderwerp  [ 12 berichten ] 
Auteur Bericht
 Titel: mysql query
BerichtGeplaatst: 25 Apr 2007 22:08 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 17 Jan 2003 0:00
Berichten: 483
Woonplaats: boekhoute
Hallo,

simpel vraagje waarschijnlijk:

stel, je wil uit een tabel alle gegevens waarbij bijvoorbeeld de kolom "bla" een van volgende waarden heeft: 0, 8 of 10 (om maar iets te zeggen)

Je kan heel simpel doen met:
=> .... WHERE bla = 0 or bla= 8 or bla = 10 ...

Maar kan je dit in makkelijker doen, of korter ? Want stel nu dat het niet om 0, 8 en 10 gaat maar over een array met tientallen getallen in.

Bestaat er dan zoiets als:
=> .... WHERE in_array(bla, array) (om maar even een php functie te gebruiken)

Alvast bedankt,
wim

(weet iemand, buiten de mysql manual een mooi overzicht staan van zo handige queries ?)


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 25 Apr 2007 22:22 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 04 Jul 2002 23:00
Berichten: 501
Woonplaats: Reet
WHERE bla IN (0,8,10)


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 26 Apr 2007 7:00 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 22 Mrt 2005 0:00
Berichten: 353
Geert82 schreef:
WHERE bla IN (0,8,10)


ik weet niet hoe het met MySQL zit, maar in DB2 geeft dit niet wat je wil

je kan best
Code:
WHERE bla IN (0, 8, 10)

schrijven. Dus met spaties na de komma.


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 30 Apr 2007 22:42 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 17 Jan 2003 0:00
Berichten: 483
Woonplaats: boekhoute
Merci voor de snelle hulp !

Is er nergens een overzichtje te vinden op het net van de handigste queries ?


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 01 Mei 2007 23:02 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 31 Jul 2002 23:00
Berichten: 236
Wel de MySQL-site is zeker niet slecht om statements op te zoeken. Ik ken zelf personen die dit als naslagwerk gebruiken niettegenstaande ze een andere database hebben.

Voor het overige denk ik dat je beter af bent met een handleiding of een boek.

Caygull.




nanananananana nananananana !!!..('k ben nog aan 't na genieten)


Omhoog
 Profiel  
 
BerichtGeplaatst: 03 Feb 2008 19:35 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 17 Jan 2003 0:00
Berichten: 483
Woonplaats: boekhoute
En hier nog een mysql vraagje der bij:

Stel je hebt een tabel met volgende kolommen:
- naam
- adres

Je wil een lijst maken met enkel maar de unieke adressen (er komen meerdere namen voor per adres), dan doe je bijvoorbeeld:

select count(*) as aantal, adres from tabel group by adres;

Nu heb je dus een lijst met alle unieke adressen en het aantal namen per adres.

Maar stel... je wilt ook weten welke namen er aan dat adres gebonden zijn, kan dit in 1 sql query of wat is hiervoor de beste/snelste oplossing ?

alvast bedankt,
Wim


Omhoog
 Profiel  
 
BerichtGeplaatst: 04 Feb 2008 8:45 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 22 Mrt 2005 0:00
Berichten: 353
Als ik het goed begrijp, zit uw tabel zo uit:

Code:
NAAM       ADRES
=========================
Jan        Schoolstraat 1
Piet       Schoolstraat 1
Dirk       Industriestraat 100


Citaat:
Maar stel... je wilt ook weten welke namen er aan dat adres gebonden zijn, kan dit in 1 sql query of wat is hiervoor de beste/snelste oplossing ?


Is dat dan niet gewoon:
Code:
select naam, adres from tabel group by adres

?

Zo heb je toch ineens alle adressen met hun namen...


Omhoog
 Profiel  
 
BerichtGeplaatst: 04 Feb 2008 8:49 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 17 Jan 2003 0:00
Berichten: 483
Woonplaats: boekhoute
Nee, in dit geval krijg je enkel 'Jan', het eerste resultaat dus, te zien. Maar ik wil in die query de twee namen terugkrijgen.

(dit wil ik gaan gebruiken om etiketten te maken, wanneer man en vrouw lid zijn wil ik 'Aan familie man - vrouw', wanneer een van beide wil ik 'Aan familie man')

groeten,
Wim


Omhoog
 Profiel  
 
BerichtGeplaatst: 04 Feb 2008 9:55 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 22 Mrt 2005 0:00
Berichten: 353
ik zou precies al zo gaan werken:

Code:
select distinct adres from tabel


dan alle rijen van het resultaat afgaan in een loopke

Code:
select naam from tabel adres = $adres


voila, alle namen voor adres, of het er nu 1 of meerdere zijn...


Omhoog
 Profiel  
 
BerichtGeplaatst: 04 Feb 2008 10:03 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 31 Jul 2002 23:00
Berichten: 236
Citaat:
Nee, in dit geval krijg je enkel 'Jan', het eerste resultaat dus, te zien.
Code:
select naam, adres from tabel group by adres

Neen in dat geval krijg je in elke deftige database een foutmeldig terug, MySQL geeft je een waarde welke hij toevallig als eerste tegenkomt.
In een group by mag je enkel de kolommen vermelden die ofwel in de groupby (in dit geval adres) staan of waar een functie (max, min, count, ..) op gebeurt die bepaalt welke waarde je wil zien. (sorry, 't is iets waar ik me nogal sterk aan erger :mrgreen: )


Citaat:
Maar ik wil in die query de twee namen terugkrijgen.

Hoe wil je die namen terugkrijgen?
- In twee verschillende kolommen? Dat zal volgens mij niet lukken.
- In één kollom met een scheidingsteken er tussen? Dat kan eventueel door een speciale functie (stored procedure) hiervoor te schrijven. De database zal dan wel voor elke rij een extra query uitvoeren.

In jouw geval zou ik dit in het programma afhandelen.
1) één query van alle records gesorteerd per adres.
2) lees het eerste adres in tijdelijk adres-veld en bewaar de naam in een array
3) in een lus lees het volgende adres.
Indien zelfde adres als tijdelijk adres
- schrijf de naam in array
Indien het een ander adres of Einde bestand is:
- maak een etiket met de gegevens in de array en tijdelijk adres
- schrijf het adres van huidig record in tijdelijk adres en andere gegevens in een leeggemaakte array
4) Na de lus kijk je of er nog iets in de array zit en zo ja maak je er een etiket van.

Hopelijk is het zowat duidelijk en heb je er iets aan.

mvg,

Caygull.


Omhoog
 Profiel  
 
BerichtGeplaatst: 04 Feb 2008 17:47 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 11 Sep 2002 23:00
Berichten: 137
Woonplaats: Gent
GROUP_CONCAT


Omhoog
 Profiel  
 
BerichtGeplaatst: 07 Feb 2008 8:53 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 17 Jan 2003 0:00
Berichten: 483
Woonplaats: boekhoute
Hallo,

bedankt voor jullie reacties !

In mijn query

Code:
GROUP_CONCAT(DISTINCT naam ORDER BY geslacht SEPARATOR ' - ')


toevoegen zorgde voor de juiste oplossing. Thx! (ook voor de workarounds)

groeten,
Wim


Omhoog
 Profiel  
 
Berichten weergeven van de afgelopen:  Sorteer op  
Plaats een nieuw onderwerp Reageren op dit onderwerp  [ 12 berichten ] 

Alle tijden zijn UTC + 1 uur


Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 33 gasten


U mag geen nieuwe onderwerpen plaatsen in dit forum
U mag geen reacties plaatsen op onderwerpen in dit forum
U mag uw berichten niet wijzigen in dit forum
U mag uw berichten niet verwijderen in dit forum
U mag geen bijlagen plaatsen in dit forum

Zoeken naar:
Ga naar:  
Powered by phpBB® Forum Software © phpBB Group
Vertaald door phpBBservice.nl.