Toon posts:

[SQL] Count met gedeelte van een kolom *

Pagina: 1
Acties:

Verwijderd

Topicstarter
zit een beetje met een query waar ik niet helemaal uitkom. 2 kolomen in 2 tables. In de ene staat: 12345 en de andere staat test12345. Hoe kan ik nu in mijn query dat woordje test negeren? (anders valt er weinig te tellen) heb al dingen geprobeerd met LIKE, (Right(test,5)) etc maar wil niet lukken :(

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:08

.oisyn

Moderator Devschuur®

Demotivational Speaker

taal in de titel

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Freee!!
  • Registratie: December 2002
  • Laatst online: 13:26

Freee!!

Trotse papa van Toon en Len!

View maken met aparte kolom voor het gedeelte achter test (SUBSTR (<kolomnaam>, 5, <lengte van kolom - 4>) zou het moeten doen.
edit:

Ik weet niet of 'SUBSTR' een standaard SQL functie is, maar ik gebruik deze vrij geregeld met DB2/400.

[ Voor 37% gewijzigd door Freee!! op 30-12-2002 15:16 . Reden: Aanvulling ]

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


Verwijderd

zoiets dus?

SELECT ding, Count(ding) AS aantal
FROM tabel
WHERE (((Right([ding],Len([ding])-4)) Like "5*"))
GROUP BY ding;

Verwijderd

Topicstarter
mmm.... ik zit meer in deze richting te denken

$sql = "SELECT (Right(var,5)), COUNT(reactieid) AS aantalreacties FROM db
LEFT JOIN reacties ON reacties.db_id=db.var
group by db.var ";
}

maar dat werkt dus niet

Verwijderd

Topicstarter
oh ja...en dat woordje test kan variabel zijn dus moet de kolom wel van achter doorlopen (denk ik zo)

Verwijderd

1) Als deze waardes gerelateerd zijn, klopt je datamodel niet, dus moet je dat aanpassen
2) je kan prima alfanumerieke waardes tellen ... je kan er niet mee rekenen (zoals met SUM())
3) wat wil je nou eigenlijk tellen?

Verwijderd

Topicstarter
zijn ze niet, databasemodel is prima, het aantal reacties.

Verwijderd

Verwijderd schreef op 30 December 2002 @ 16:24:
zijn ze niet, databasemodel is prima, het aantal reacties.
Misschien kunnen mensen je beter kunnen helpen als je meer energie steekt in het uitleggen van je probleem. Zo zou een beschrijving van je datamodel, wat voorbeelddata en een beschrijving van de gewenste uitkomst (liefst aan de hand van een voorbeeld met de eerder genoemde voorbeelddata) wonderen doen ...

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 17-11-2025

robjanssen

Software Developer

Zo dan:

code:
1
2
3
4
SELECT RIGHT(db.var,5), COUNT(reacties.reactieid) AS aantalreacties
FROM db
LEFT JOIN reacties ON db.var = reacties.db_id
GROUP BY RIGHT(db.var,5)

Verwijderd

Topicstarter
Er staat wel Software Prutser maar voor mij ben je Da Man! Hij moest iets anders en nu werkt het :)

code:
1
2
3
4
SELECT COUNT(reacties.reactieid) AS aantalreacties
FROM db
LEFT JOIN reacties ON RIGHT(db.var,5) = reacties.db_id
GROUP BY db.var

eigenlijk best simpel toch, Allemaal bedankt!

[ Voor 3% gewijzigd door Verwijderd op 30-12-2002 19:29 ]


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

En toch denk ik dat er wat fout is aan je datamodel als je dat zo moet joinen...

Verwijderd

Topicstarter
fout, fout laten we inderdaad zeggen dat het niet ideaal is. Zal het uitleggen, ik heb een site met films op tv, misschien ken je hem wel (fok). Je kan op iedere film reageren en dat gebeurt vrij veel. Echter als een film weer wordt uitgezonden worden daar de reacties van de vorige keer niet bij getoond. Oorspronkelijk dacht ik dat het niet belangrijk was maar bezoekers klagen dat ze nu 10x hetzelfde moeten schrijven. Dus om dat wel te kunnen laten zien moest ik iets bedenken met de url van de imdb (de overeenkomst die dezelfde films altijd hebben), en om dat te laten werken is deze consctructie ff nodig. Dus je hebt wel gelijk, niet bepaald ideaal, bij de nieuwe site rekening mee houden.

Ik wil nog wel ff kwijt dat ik afentoe en beetje moe wordt van elitair gel*l hier. Ik kom al lang op tweakers en weet mijn probleem (mijn inziens) best te omschrijven. Maar het lijkt hier tegenwoordig vaak meer de bedoeling om anderen een beetje af te zeiken of om te laten zien hoe goed je zelf bent, heel jammer en niet nodig.

Verwijderd

Verwijderd schreef op 31 December 2002 @ 00:45:
fout, fout laten we inderdaad zeggen dat het niet ideaal is. Zal het uitleggen, ik heb een site met films op tv, misschien ken je hem wel (fok). Je kan op iedere film reageren en dat gebeurt vrij veel. Echter als een film weer wordt uitgezonden worden daar de reacties van de vorige keer niet bij getoond. Oorspronkelijk dacht ik dat het niet belangrijk was maar bezoekers klagen dat ze nu 10x hetzelfde moeten schrijven. Dus om dat wel te kunnen laten zien moest ik iets bedenken met de url van de imdb (de overeenkomst die dezelfde films altijd hebben), en om dat te laten werken is deze consctructie ff nodig. Dus je hebt wel gelijk, niet bepaald ideaal, bij de nieuwe site rekening mee houden.
Een dergelijke constructie kan dus wel, maar is zeer sterk af te raden.

Zoals ik al eerder zei bestaat er dus wel een relatie tussen de tabellen. Door een bewerking op de key te doen om twee tabellen te joinen zal de database nooit een index kunnen begruiken, en zal de belasting van deze query onnodig hoog zijn. Zeker als deze query veel gedraaid zal worden raad ik je aan het zsm aan te passen.
Ik wil nog wel ff kwijt dat ik afentoe en beetje moe wordt van elitair gel*l hier. Ik kom al lang op tweakers en weet mijn probleem (mijn inziens) best te omschrijven. Maar het lijkt hier tegenwoordig vaak meer de bedoeling om anderen een beetje af te zeiken of om te laten zien hoe goed je zelf bent, heel jammer en niet nodig.
Ik denk dat het meer zinvol is je eigen conclusie te trekken hieruit dan te gaan flamen in een topic.

Je kan tenslotte je vraag ook stellen in de Digital Corner van Fok!. Hier in P & W wordt er iets meer inspanning van jouw kant verwacht, en dat vind ik niet onredelijk. Lees de Welkom in P&W -> Quickstart (update 2/10/2002) er maar eens op na.

Als heel terechte en kritische conclusies worden getrokken, dan moet je dit zien als advies van meer ervaren mensen, niet als elitair gelul. Kortom, het is meer jouw perceptie en onvermogen met kritiek om te gaan dat leidt tot jouw uitspraken dan iets anders.

[ Voor 4% gewijzigd door Verwijderd op 31-12-2002 13:27 ]


Verwijderd

Topicstarter
zucht, ok Mister X, jij hebt gelijk...

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 31 December 2002 @ 14:10:
zucht, ok Mister X, jij hebt gelijk...

(Pas maar op dat ie niet gaat zeuren dat je hem Mister X ipv MrX noemt :P )

Maar nog een tipje.
Het gebruik van het imdb-id is een goed idee, waarom zou je zelf een id genereren voor een film, terwijl er al een bestaat (en imdb bevat de meeste films toch wel).
Een reden waarom het niet handig zou kunnen zijn is dat je geen onderscheid tussen films en gewone programma's zou willen maken, maar aangezien je alleen met films werkt is dat niet interessant.

Wat je dan niet moet doen is de complete imdb-url opslaan, maar gewoon alleen het imdb-id.
Want de url is toch verder altijd hetzelfde. Als je dan alleen dat imdb-nummer opslaat heb je gelijk (zonder bewerkingen en dus bruikbaar met indices) de relatie die je nodig hebt.

Verwijderd

ACM schreef op 31 December 2002 @ 14:24:

[...]

(Pas maar op dat ie niet gaat zeuren dat je hem Mister X ipv MrX noemt :P )
Zo lang mensen mij maar niet verwarren met Mister_X kan ik ermee leven ;)
Maar nog een tipje.
Het gebruik van het imdb-id is een goed idee, waarom zou je zelf een id genereren voor een film, terwijl er al een bestaat (en imdb bevat de meeste films toch wel).
Een reden waarom het niet handig zou kunnen zijn is dat je geen onderscheid tussen films en gewone programma's zou willen maken, maar aangezien je alleen met films werkt is dat niet interessant.

Wat je dan niet moet doen is de complete imdb-url opslaan, maar gewoon alleen het imdb-id.
Want de url is toch verder altijd hetzelfde. Als je dan alleen dat imdb-nummer opslaat heb je gelijk (zonder bewerkingen en dus bruikbaar met indices) de relatie die je nodig hebt.
Hmmmm ... ik ben altijd een voorstander van een eigen ID, omdat anders je ID een betekenis gaat krijgen. Als de id's op IMDB zouden veranderen (of niet zouden bestaan, voor bijv. een obscure Nederlandse film), heb je een probleem.

Maak dan liefst een kolom IMDB_ID aan, en gebruik die om te koppelen. Zo kun je namelijk ook checken of er geen IMDB pagina bestaat (Null). Verder kun je dan gewoon een funktie schrijven om de IMBD_ID in een geldige IMDB url om te zetten, zodat dat ook makkelijk is aan te passen als de structuur van IMDB ooit eens verandert.
Pagina: 1