[SQL] count uitvoeren op enkele rij

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 25-09 14:56
Hallo medetweakers,

Een bekende van mij heeft het volgende probleem:

Hij heeft binnen een SQL database een tabel die per rij, meerdere kolommen bevat met de waardes true of false. Nu wil hij een count uitvoeren op 1 rij uit die tabel en alle waarden die in de betreffende rij op "true" staan, tellen. Het zou er dus als volgt uit zien:
SQL:
1
2
3
          kolom 1          kolom 2
rij 1     true             true
rij 2     false            true


Als hij dus een count zou uitvoeren op rij 1, zou er 2 uit moeten komen en als hij een count uitvoert op rij 2 zou er 1 uit moeten komen. Nu vroeg hij aan mij of ik hier een oplossing voor had, omdat hij er met googlen niet achter is gekomen of het wel of niet kan, maar ik moest hem het antwoord ook schuldig blijven. Dus ik dacht, ik gooi het hier even in de groep om te kijken of iemand hier een oplossing voor heeft. Weet iemand of dit mogelijk is met SQL en heeft iemand hier misschien een oplossing voor?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
eeehm, misschien
code:
1
Select count(1) from tabel where kolom_1=true


Oeps....eerst lezen, dan antwoorden.

code:
1
Select kolom_1+kolom_2 from tabel

[ Voor 37% gewijzigd door KabouterSuper op 01-12-2008 15:16 ]

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 25-09 14:56
KabouterSuper schreef op maandag 01 december 2008 @ 15:14:
eeehm, misschien
code:
1
Select count(1) from tabel where kolom_1=true
Hij wil niet alleen van kolom 1 de waarde tellen maar van alle kolommen in de gehele rij, dus ook van kolom 2.

Acties:
  • 0 Henk 'm!

  • T-8one
  • Registratie: Oktober 2001
  • Laatst online: 25-09 15:47

T-8one

take it easy, take a sisi

Ik ben niet bekend met SQL database, maar wel met Oracle ik verwacht dat het volgende in SQL database ook werkt:

code:
1
2
3
select decode(a, 'true', 1, 0) 
    +  decode(b, 'true', 1, 0) 
from table


tenminste als dit is wat je wilt?

GP 32 the most powerfull handheld in the world :P


Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 25-09 14:56
T-8one schreef op maandag 01 december 2008 @ 15:17:
Ik ben niet bekend met SQL database, maar wel met Oracle ik verwacht dat het volgende in SQL database ook werkt:

code:
1
2
3
select decode(a, 'true', 1, 0) 
    +  decode(b, 'true', 1, 0) 
from table


tenminste als dit is wat je wilt?
Wat ik wil is van een enkele rij de waarden van alle kolommen die op true staan tellen. Ik ben niet bekend met Oracle, haha! Maar is dat wat je hier doet met de Oracle query?

edit: Decode is geen functie binnen SQL dus dat gaat em niet worden...

[ Voor 6% gewijzigd door rickjehh op 01-12-2008 15:22 ]


Acties:
  • 0 Henk 'm!

  • The_Ghost16
  • Registratie: Januari 2004
  • Laatst online: 19-05 10:05
Maak je gebruik van SQL server of mysql

Ik denk dat je niet kunt tellen hoeveel kolommen er op true zijn. Dit zul je programmeer technisch moeten oplossen.

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
In Oracle bestaan geen boolean velden, dus dan moet je inderdaad iets anders verzinnen (zoals de strings 'true' en 'false'). Je kunt dan met een decode dit vertalen in een 1 of een 0.

Maar de vraagstelling is inderdaad wel erg bondig, dus of dit is wat de TS wil?

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Klinkt als een slecht datadesign. Wat zit er in die kolommen?

https://niels.nu


Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 25-09 14:56
The_Ghost16 schreef op maandag 01 december 2008 @ 15:21:
Maak je gebruik van SQL server of mysql

Ik denk dat je niet kunt tellen hoeveel kolommen er op true zijn. Dit zul je programmeer technisch moeten oplossen.
See topic start, SQL database (daarmee bedoelde ik MS SQL server, sorry als dat wat onduidelijk was). Dat zou wel jammer zijn. Nouja ik wil puur weten of het mogelijk is om bepaalde waarden te tellen op rij niveau i.p.v. op kolom niveau.

Acties:
  • 0 Henk 'm!

  • T-8one
  • Registratie: Oktober 2001
  • Laatst online: 25-09 15:47

T-8one

take it easy, take a sisi

rickjehh schreef op maandag 01 december 2008 @ 15:20:
[...]


Wat ik wil is van een enkele rij de waarden van alle kolommen die op true staan tellen. Ik ben niet bekend met Oracle, haha! Maar is dat wat je hier doet met de Oracle query?

edit: Decode is geen functie binnen SQL dus dat gaat em niet worden...
Met die decode vervang ik de 'true' door een 1, en als het ongelijk is aan 'true' vervang ik het door een 0, dan kun je ze wel optellen.

Ok, maar dit is wel wat je wilt?
Heeft MS SQL ook geen CASE functie dan?
Of kun je in MS SQL boolean's optellen?

[ Voor 16% gewijzigd door T-8one op 01-12-2008 15:27 ]

GP 32 the most powerfull handheld in the world :P


Acties:
  • 0 Henk 'm!

  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 27-09 00:35
Waarom gebruikt hij True en False? Als hij gaat werken met 1 (True) en 0 (False) wordt het al een stuk makkelijker...

Dan haal je de rij uit de database en maak je een variable aan met de verkregen nulletjes en eentjes.

Rij 1 is dan: Kolom 1 + Kolom 2 > 1 + 1 = 2
Rij 2 is dan: Kolom 1 + Kolom 2 > 0 + 1 = 1

Op die manier maak je het jezelf een stuk makkelijker...

People who live in glass houses shouldn't throw stones.


Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 25-09 14:56
Hydra schreef op maandag 01 december 2008 @ 15:23:
Klinkt als een slecht datadesign. Wat zit er in die kolommen?
Hij heeft dus een tabel, zoals ik in de topic start heb aangegeven met b.v. twee kolommen. Daarin staan de waardes "true" en "false" en hij wil dus op rij niveau gaan kijken welke kolommen true zijn.

Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 26-09 22:10
Weet niet genoeg van MS SQL, maar in principe zou je alle kolommen bij elkaar op tellen, als TRUE == 1. Probeer het eerst eens zonder tabellen:

SELECT TRUE + TRUE;

Komt daar 2 uit? Dan kan je de kolommen die je wil bij elkaar optellen (en de uitkomst een alias geven).

edit: of doen wat Werner zegt, met getallen 1 en 0 werken. Maar dat is misschien dus hetzelfde als True en False.

[ Voor 17% gewijzigd door !null op 01-12-2008 15:28 ]

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

  • The_Ghost16
  • Registratie: Januari 2004
  • Laatst online: 19-05 10:05
Wordt dit gebruikt in wat programmeerwerk of direct op de server uitgevoerd? Anders kun je dat tellen beter over laten aan je programmeertaal en niet door SQL server laten doen.

Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 25-09 14:56
Hij heeft het inmiddels opgelost met deze query. Ik weet het fijne niet van zijn database ontwerp dus daarover kan ik eigenlijk niets zeggen. Maar hij heeft het zo opgelost (met 1 en 0 dus idd):

SQL:
1
select ((case bool1 when 1 then 1 else 0) + (case bool2 when 1 then 1 else 0) from table

[ Voor 3% gewijzigd door rickjehh op 01-12-2008 15:29 ]


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Eerste hit op yahoo! (zoek op sql server decode)

The equivalent of Oracle's DECODE function in SQL Server is the CASE function.

CASE input_expression
WHEN when_expression_1 THEN result_expression_1
[ WHEN when_expression_2 THEN result_expression_2
WHEN when_expression_n THEN result_expression_n ]
[ ELSE else_result_expression ]
END

Enne, SQL is een taal, geen software product. Het SQL kent vele dialecten....zo zijn er best veel verschillen tussen Oracle-SQL, MySQL en SQL Server-SQL.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • markiew
  • Registratie: Mei 2007
  • Laatst online: 24-09 20:28
erg lui en misschien erg stom wat ik zeg, aan de andere kant misschien ook zinvol;

met COUNT tel je toch alleen het aantal kolommen niet de waarden, dus maakt weinig uit of je nu count van kolom 1 of 2, of 1 +2 doet.... je kant zelfs count(*) doen. Als je de inhoud (waarde) van kolom wil tellen dan gebruik je SUM. Vergeet ook de GROUP BY niet.

Het is een boolean die je telt, dan zou je idd count met voorwaarde mee moeten geven.

[ Voor 12% gewijzigd door markiew op 01-12-2008 15:31 ]


Acties:
  • 0 Henk 'm!

  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
Als het MS SQL is, kun je de boolean dacht ik zonder problemen casten naar een int.
Dan krijg je dus SELECT CAST( kolom1 AS INT) + CAST( kolom2 AS INT) AS AantTrue.
Eventueel nog een ISNULL(,0) er omheen als er NULL-waarden kunnen zijn.

Als er meer dan twee kolommen zijn dan zou ik toch overwegen om een tussentabel te maken ipv kolom 1..x met dezelfde data.

Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 19:48

Dido

heforshe

rickjehh schreef op maandag 01 december 2008 @ 15:26:
Hij heeft dus een tabel, zoals ik in de topic start heb aangegeven met b.v. twee kolommen. Daarin staan de waardes "true" en "false" en hij wil dus op rij niveau gaan kijken welke kolommen true zijn.
Je beantworodt welliswaar letterlijk de vraag en toch zeg je niet wat gevraagd wordt ;)

Meestal zijn dit soort problemen het gevolg van een sub-optimaal databasedesign. Vandaar de vraag wat er in die kolommen zit. En daarmee wordt dan bedoeld: is het iets als "betaaldJanuari", "betaaldFebruari", "betaaldMaart"? Dat verklaart namelijk waarom je ueberhaupt zou willen weten hoeveel er op true staan.

Maar dat toont ook aan dat je databasedesign niet best is.

Daarnaast zijn er denk ik best mensen benieuwd naar een geldige reden om tegen dit probleem op te lopen :)

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 25-09 14:56
KabouterSuper schreef op maandag 01 december 2008 @ 15:29:
Eerste hit op yahoo! (zoek op sql server decode)

The equivalent of Oracle's DECODE function in SQL Server is the CASE function.

CASE input_expression
WHEN when_expression_1 THEN result_expression_1
[ WHEN when_expression_2 THEN result_expression_2
WHEN when_expression_n THEN result_expression_n ]
[ ELSE else_result_expression ]
END

Enne, SQL is een taal, geen software product. Het SQL kent vele dialecten....zo zijn er best veel verschillen tussen Oracle-SQL, MySQL en SQL Server-SQL.
Dat had hij waarschijnlijk ook gevonden, dat is dus idd de oplossing! allemaal bedankt voor de quick replies!

Acties:
  • 0 Henk 'm!

  • 2playgames
  • Registratie: Februari 2005
  • Laatst online: 01-06 15:19
when 1 then 1 else 0
lijkt een beetje op

code:
1
2
if (iets) return true;
else return false;


ach ja, als het werkt dan maakt het verder ook niet zo heel veel uit natuurlijk

Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 26-09 22:10
rickjehh schreef op maandag 01 december 2008 @ 15:29:
Hij heeft het inmiddels opgelost met deze query. Ik weet het fijne niet van zijn database ontwerp dus daarover kan ik eigenlijk niets zeggen. Maar hij heeft het zo opgelost (met 1 en 0 dus idd):

SQL:
1
select ((case bool1 when 1 then 1 else 0) + (case bool2 when 1 then 1 else 0) from table
Eh? Dat lijkt me wel heel overdreven.

Dat kan dan toch gewoon verkort worden, naar wat ik voorstelde:

SQL:
1
select (bool1+ bool2) from table

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 25-09 14:56
2playgames schreef op maandag 01 december 2008 @ 15:32:
[...]


lijkt een beetje op

code:
1
2
if (iets) return true;
else return false;


ach ja, als het werkt dan maakt het verder ook niet zo heel veel uit natuurlijk
Klopt, het werkt bij hem nu idd. Het probleem was ook een beetje bij dit topic dat ik het fijne niet wist van zijn database ontwerp, dus daarover kan ik eigenlijk niets vertellen. Maar uiteindelijk heeft hij het probleem zelf op kunnen lossen. Bedankt allemaal.

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 22:08

MBV

Ik ben in aardig wat rapporten dit soort constructies tegengekomen (draaitabellen in MySQL :r database van een ERP :r):
SQL:
1
2
SELECT SUM(if (filiaal = 1, verkoop, 0)) filiaal1verkoop
FROM ...

Dat lijkt dus een beetje op wat je nu hebt.

Een count gaat hier niet werken, ik zou zelf verwachten dat je hier met een SUM(bool1) + SUM(bool2) krijgt wat je wilt hebben, en anders een SUM met een CASE erin.

[ Voor 14% gewijzigd door MBV op 01-12-2008 15:39 ]


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Dido schreef op maandag 01 december 2008 @ 15:30:
[...]

Je beantworodt welliswaar letterlijk de vraag en toch zeg je niet wat gevraagd wordt ;)

Meestal zijn dit soort problemen het gevolg van een sub-optimaal databasedesign. Vandaar de vraag wat er in die kolommen zit. En daarmee wordt dan bedoeld: is het iets als "betaaldJanuari", "betaaldFebruari", "betaaldMaart"? Dat verklaart namelijk waarom je ueberhaupt zou willen weten hoeveel er op true staan.

Maar dat toont ook aan dat je databasedesign niet best is.

Daarnaast zijn er denk ik best mensen benieuwd naar een geldige reden om tegen dit probleem op te lopen :)
Precies.
rickjehh schreef op maandag 01 december 2008 @ 15:34:
Klopt, het werkt bij hem nu idd. Het probleem was ook een beetje bij dit topic dat ik het fijne niet wist van zijn database ontwerp, dus daarover kan ik eigenlijk niets vertellen. Maar uiteindelijk heeft hij het probleem zelf op kunnen lossen. Bedankt allemaal.
Nee, het 'probleem' is niet opgelost, het symptoom is bestreden :)

https://niels.nu


Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 25-09 14:56
GreenSky schreef op maandag 01 december 2008 @ 15:33:
[...]


Eh? Dat lijkt me wel heel overdreven.

Dat kan dan toch gewoon verkort worden, naar wat ik voorstelde:

SQL:
1
select (bool1+ bool2) from table
Dit werkt sowieso niet, want hij wil die waarden tellen.

Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 19:48

Dido

heforshe

rickjehh schreef op maandag 01 december 2008 @ 15:40:
Dit werkt sowieso niet, want hij wil die waarden tellen.
En wat doet dat statement wat je quote dan? Doet dat iets anders?

Hint: kennelijk geldt in het geval van je vriend dat "true" als 1 en "false" als 0 gezien wordt. Als jij drie waarden van 1 hebt, en 5 van 0, wat is dan het verschil tussen "tellen hoeveel keer 1 voorkomt" en "1+1+1+0+0+0+0+0" ?

[ Voor 32% gewijzigd door Dido op 01-12-2008 15:42 ]

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 25-09 14:56
Hydra schreef op maandag 01 december 2008 @ 15:39:

Nee, het 'probleem' is niet opgelost, het symptoom is bestreden :)
Haha ja oke, het symptoom is bestreden. Het is iig opgelost en mijn dank voor jullie reacties :)

Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 26-09 22:10
MBV schreef op maandag 01 december 2008 @ 15:38:
Ik ben in aardig wat rapporten dit soort constructies tegengekomen (draaitabellen in MySQL :r database van een ERP :r):
SQL:
1
2
SELECT SUM(if (filiaal = 1, verkoop, 0)) filiaal1verkoop
FROM ...

Dat lijkt dus een beetje op wat je nu hebt.

Een count gaat hier niet werken, ik zou zelf verwachten dat je hier met een SUM(bool1) + SUM(bool2) krijgt wat je wilt hebben, en anders een SUM met een CASE erin.
Eh het antwoord is al gegeven, en SUM lijkt me niet van toepassing hier.
Hij wil gewoon horizontaal deze waardes tellen. En aangezien blijkbaar ook in MS SQL, True == 1, kan je gewoon de kolomen bij elkaar optellen. Horizontaal, dus kolom1 + kolom2 + kolom3.
rickjehh schreef op maandag 01 december 2008 @ 15:40:
[...]


Dit werkt sowieso niet, want hij wil die waarden tellen.
Mijn SQL Statement doet precies hetzelfde als die van die vriend van je. Alleen dan beter opgeschreven.

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
rickjehh schreef op maandag 01 december 2008 @ 15:42:
Haha ja oke, het symptoom is bestreden. Het is iig opgelost en mijn dank voor jullie reacties :)
Ja heel leuk, maar ga je nu ook nog even uitleggen wat er precies (FUNCTIONEEL) in die kolommen zit?
GreenSky schreef op maandag 01 december 2008 @ 15:45:
Eh het antwoord is al gegeven, en SUM lijkt me niet van toepassing hier.
Hij wil gewoon horizontaal deze waardes tellen. En aangezien blijkbaar ook in MS SQL, True == 1, kan je gewoon de kolomen bij elkaar optellen. Horizontaal, dus kolom1 + kolom2 + kolom3.
Nouja, ik vind het nogal een aanname dat dat 'gewoon' werkt. Persoonlijk vind ik het netter het expliciet te maken, wat niet wegneemt dat ik het 'probleem' zelf niet vind kloppen.

[ Voor 47% gewijzigd door Hydra op 01-12-2008 15:50 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 25-09 14:56
Hydra schreef op maandag 01 december 2008 @ 15:46:
[...]


Ja heel leuk, maar ga je nu ook nog even uitleggen wat er precies (FUNCTIONEEL) in die kolommen zit?
Ik ben hem aan het spammen op MSN, zo gauw hij reageert zal ik er even op terugkomen hier. Hij reageert: De functionele inhoud van de kolommen betrof een 1 of een 0.

[ Voor 10% gewijzigd door rickjehh op 01-12-2008 15:54 ]


Acties:
  • 0 Henk 'm!

  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
GreenSky schreef op maandag 01 december 2008 @ 15:45:
[...]


Eh het antwoord is al gegeven, en SUM lijkt me niet van toepassing hier.
Hij wil gewoon horizontaal deze waardes tellen. En aangezien blijkbaar ook in MS SQL, True == 1, kan je gewoon de kolomen bij elkaar optellen. Horizontaal, dus kolom1 + kolom2 + kolom3.


[...]


Mijn SQL Statement doet precies hetzelfde als die van die vriend van je. Alleen dan beter opgeschreven.
Bij MS SQL kun je niet zomaar bitvelden bij elkaar optellen, dan krijg je een melding dat de types het niet toestaan. Met een CAST er omheen is het wel mogelijk, zoals ik in mijn vorige post al zei.

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
rickjehh schreef op maandag 01 december 2008 @ 15:50:
Ik ben hem aan het spammen op MSN, zo gauw hij reageert zal ik er even op terugkomen hier. Hij reageert: De functionele inhoud van de kolommen betrof een 1 of een 0.
Laat maar. De vraag verbaast me nu niks meer in ieder geval.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 26-09 22:10
Haha idd.

@Hydra en Psychokiller. Ik ging er aan de hand van andere posts vanuit dat het kon, foute conclusie dus. Ik werk niet dagelijks met MS SQL, vandaar. In principe zou je het dan van bit naar byte/char/short kunnen zetten, maar dat zorgt voor overhead. Al is dat sowieso hier het geval, het lijkt me iets om met flags in 1 veld te werken. Maar goed, daarvoor weten we niet genoeg van de situatie.

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 22:08

MBV

GreenSky schreef op maandag 01 december 2008 @ 15:45:
[...]


Eh het antwoord is al gegeven, en SUM lijkt me niet van toepassing hier.
Hij wil gewoon horizontaal deze waardes tellen. En aangezien blijkbaar ook in MS SQL, True == 1, kan je gewoon de kolomen bij elkaar optellen. Horizontaal, dus kolom1 + kolom2 + kolom3.
My bad, ik had de startpost gelezen alsof hij ze verticaal wilde optellen. En ik dacht dat hij daar nu een workaround voor had. Ik begin nu ook wel heel nieuwsgierig te worden waarom je booleans wil optellen. Verticaal kan ik me namelijk wel voorstellen (aantal nieuwsbriefinschrijvingen o.i.d.) maar horizontaal? :X

Daarnaast vraag ik me af waarom mensen niet rechtstreeks op GoT een vraagje stellen, maar dat een 'handlanger' laten doen. Of de TS doet alleen maar alsof hij de handlanger is, en durft er niet zelf voor uit te komen dat hij het niet weet >:)

Acties:
  • 0 Henk 'm!

  • FerdyHoefakker
  • Registratie: December 2008
  • Laatst online: 07-06 00:55
Nou, maar ff zelf een accountje gemaakt, anyways ik was degene die rickjehh vroeg of hij het wist. Omdat hij het niet wist heeft zei hij dat ie et hier in de groep zou gooien. Ik zelf kom eigenlijk niet op tweakers.

Maar goed, ik zelf weet er ook het fijne niet van. Het moest uitgezocht worden voor een klant van het bedrijf waar ik stage loop. De database bevat auto dealers, en dan is een row zeg maar: naam, isOpelDealer, isAudiDealer, etc. En nu moest er iets gedaan worden zodat er gezien kon worden voor hoeveel merken de dealer een dealer is.

En tjah, mijn begeleider was er mee bezig, kwam er niet uit, en die zei toen tegen mij "ga jij et maar ff uitzoeken"

De oplossing die we hadden was met die cases:

select ((case bool1 when 1 then 1 else 0) + (case bool2 when 1 then 1 else 0) from table

Ik hoop dat et zo duidelijk is. De tabel/database zou best een grote wanorde kunnen zijn hoor, maarja ik heb em verder niet gezien, mij is alleen verteld wat ze voor elkaar wilden krijgen. En uiteraard willen ze dingen gedaan krijgen, maar het mag niet te veel kosten dus we mogen ook de database niet aanpassen dus moeten we roeien met de riemen die we hebben ;)

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Dat begrijp ik, maar daarom wou ik het dus weten. Kwa databasedesign is het nl. gewoon fout (je moet voor iedere nieuwe dealertype het DB schema aanpassen) wat er toe leidt dat je dit soort kunstgrepen moet toepassen. M'n vraag stelde ik danook om, als we weten wat er functioneel moet gebeuren, suggesties kunnen geven voor het verbeteren van 't design. Je zou dit met een lijst dealertypen, lijst dealers, en een koppertabel doen, waarna je gewoon met een simpele select count() query de aantallen up kunt halen.

[ Voor 18% gewijzigd door Hydra op 01-12-2008 17:19 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 26-09 22:10
Het DB ontwerp is inderdaad redelijk fout, maar ik snap de situatie. Wat ik niet snap is dat je begeleider er niet uitkomt maar jij wel :P (of je begeleider is gespecialiseerd in andere dingen natuurlijk)

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

  • rickjehh
  • Registratie: Februari 2008
  • Laatst online: 25-09 14:56
GreenSky schreef op maandag 01 december 2008 @ 19:05:
Het DB ontwerp is inderdaad redelijk fout, maar ik snap de situatie. Wat ik niet snap is dat je begeleider er niet uitkomt maar jij wel :P (of je begeleider is gespecialiseerd in andere dingen natuurlijk)
Misschien heeft zijn begeleider wel alleen gezegd dat hij het uit moest zoeken en had hij daar zelf geen zin in ;)
Pagina: 1