1. #1
    Boddah's Avatar
    Registered
    25/11/03
    Location
    Antwerpen
    Posts
    2,757
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/3

    SQL: tabel/kolom selecteren na voorwaarde

    hallo,

    even een achtergrond schets ter verduidelijking: dit is voor een manager spel dat ik aan het maken ben, in het bijzonder het transfereren van wielrenners.

    wanneer ik alle cyclists die op de transferlijst staan wil zien, doe ik een query van verschillende tabellen, nl transfers, cyclists en teams, zodat ik meteen de gegevens van de betrokken cyclist en het team dat het laatste heeft geboden heb.

    de tabel 'transfers' heeft volgende kolommen:
    id
    last_team_id
    cyclist_id
    price
    deadline

    last_team_id kan OOK de waarde 0 kan hebben: wanneer er nog geen team heeft geboden.

    en dit is een beetje het probleem:
    wlke tabellen en kolommen die ik wil selecteren hangen af van last_team_id. als deze niet nul is, wil ik ook de teams-tabel selecteren zodat ik bv de naam van het team meteen heb.
    als last_team_id gelijk is aan 0, wil ik enkel een selectie doen van transfers en cyclists

    dus moet er ergens een if..then structuur in passen denk ik, maar ik weet niet hoe precies.
    met andere woorden: hoe steek ik dit alles in één query?

    (ik hoop dat ik duidelijk was, anders... probeer ik het nog wel eens )

    alvast bedankt
    Free online cycling manager
    no votes  

  2. #2
    WHiSPy's Avatar
    Registered
    17/07/02
    Location
    lifeless
    Posts
    760
    iTrader
    0
    Mentioned
    0 Post(s)
    Is het 'n query voor SQL server en hebt ge toegang tot views/stored procedures?
    Technical JEE consultant: Cronos - Just another geek: web\lab studios
    Standards aren't for innovation as it happens, they are for innovation that has gotten so old that everybody is ready to just conform to the accepted best practices and move on to figuring out something else.. (Hans Reiser)
    no votes  

  3. #3
    Boddah's Avatar
    Registered
    25/11/03
    Location
    Antwerpen
    Posts
    2,757
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/3
    yup
    Free online cycling manager
    no votes  

  4. #4
    DJ_Trash's Avatar
    Registered
    08/04/03
    Posts
    795
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    selecteert gewoon ALLES wa ge ergens nodig hebt en schrijf uw selectie in uw pagina/programma

    of werk met PLSQL of variant
    wat baten vuur en grill, als de kip niet braden wil
    no votes  

  5. #5
    RpR's Avatar
    Registered
    26/03/03
    Location
    Dendermonde
    Posts
    5,472
    iTrader
    28 (100%)
    Mentioned
    0 Post(s)
    Reputation
    1/8
    Gebruik stored procedures en dan zou dat in orde moeten komen.
    Lang geleden da ik ze nog gezien heb dus kan geen vbtje typen.
    no votes  

  6. #6
    Kn0t's Avatar
    Registered
    17/07/02
    Location
    #sskclan
    Posts
    336
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Euh.. stored procedures? Da kan toch gewoon met joins?

    select * from
    transfers join cyclists on transfers.cyclist_id = cyclists.id
    left join teams on transfers.last_team_id = teams.id

    Dan hebben de teams kolommen wel de waarde NULL als er nog geen team geboden heeft, maar dat is even makkelijk op te vangen als wanneer je de teams kolommen gewoon niet zou terug krijgen (geval van stored procedure).
    no votes  

  7. #7
    Boddah's Avatar
    Registered
    25/11/03
    Location
    Antwerpen
    Posts
    2,757
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/3
    merci Kn0t, dat is precies wat ik wil hebben.
    ik was aan het denken aan joins; inner en outer, left, etc maar dit zit allemaal zooo ver weg

    is het trouwens mogelijk om de team naam (kolom teams.name), ipv NULL te laten, een bepaalde waarde te geven? bv 'Geen Team', om maar iets te zeggen? Zodat dit later meteen in de applicatie kan geladen worden, en ik hier niets meer op applicatie niveau hoef te doen.
    Free online cycling manager
    no votes  

  8. #8
    WHiSPy's Avatar
    Registered
    17/07/02
    Location
    lifeless
    Posts
    760
    iTrader
    0
    Mentioned
    0 Post(s)
    Quote Originally Posted by Boddah
    This quote is hidden because you are ignoring this member. Show
    merci Kn0t, dat is precies wat ik wil hebben.
    ik was aan het denken aan joins; inner en outer, left, etc maar dit zit allemaal zooo ver weg

    is het trouwens mogelijk om de team naam (kolom teams.name), ipv NULL te laten, een bepaalde waarde te geven? bv 'Geen Team', om maar iets te zeggen? Zodat dit later meteen in de applicatie kan geladen worden, en ik hier niets meer op applicatie niveau hoef te doen.
    Een left join hangt allemaal af van 't feit of 'n bepaalde conditie null is. (veld heeft geen child row in de andere tabel) Dan gaat ge sowieso ofwel 'n if moeten schrijven in je query, ofwel gewoon 'n sp moeten gebruiken.

    Trouwens: alles selecteren wat ge ooit nodig hebt? Dat wilt ge sowieso NOOIT doen. Vraag bijvoorbeeld maar eens de execution plan op van zo'n query en huiver!
    Technical JEE consultant: Cronos - Just another geek: web\lab studios
    Standards aren't for innovation as it happens, they are for innovation that has gotten so old that everybody is ready to just conform to the accepted best practices and move on to figuring out something else.. (Hans Reiser)
    no votes  

  9. #9
    Boddah's Avatar
    Registered
    25/11/03
    Location
    Antwerpen
    Posts
    2,757
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/3
    tja, ik wou die query in een SP steken, omdat ik toch steeds dezelfde informatie moet opvragen voor dat gedeelte. en alles wat ik opvraag ga ik tonen op het scherm, het is niet dat ik maar enkele veldjes zal gebruiken.

    en daarom leek het mij beter om dat zo te doen, ipv in de applicatie zelf de null values eruit te halen en te vervangen door een bepaalde tekst.

    maar als het dan zo beter is, dan zal ik het zo maar doen.
    Free online cycling manager
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in