Toon posts:

[SQL] Dubbele waardes filteren

Pagina: 1
Acties:
  • 616 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb het volgende select script. Probleem is echter dat als mensen zich voor meerdere nieuwsbrieven hebben ingeschreven ze ook meerdere keren gereturned worden. Weet iemand een manier wanneer wuwebusers.id = wuwebusernlsubscr.webuser de waardes uit wuwebusernlsubscr.category in 1 veld te plakken.

SQL:
1
2
3
4
5
6
7
SELECT distinct tabeltest.*, 
wuwebusers.firstname as voornaam, 
wuwebusers.email, 
DECODE(wuwebusernlsubscr.category, 48137, 'Nieuwsbrief 1', 51915, 'Nieuwsbrief 2', 80722, 'Nieuwsbrief 3', 'Onbekend') as Nieuwsbrief
FROM tabeltest,wuwebusers,wuwebusernlsubscr 
where tabeltest.wuid = wuwebusers.id 
and wuwebusers.id = wuwebusernlsubscr.webuser


Even de overbodige code weggehaald

[ Voor 47% gewijzigd door Verwijderd op 26-01-2006 14:49 ]


  • Stoppel
  • Registratie: Januari 2006
  • Laatst online: 14-04 15:13

Stoppel

een diedudabist

group by

succes,
Groet,
Stoppel

Beauty is in the eye of the beholder


Verwijderd

Waaaa doe even relaxed met zo'n megaquery :| Post er ff code-tags omheen of zo :)
Weet iemand een manier wanneer wuwebusers.id = wuwebusernlsubscr.webuser de waardes uit wuwebusernlsubscr.category in 1 veld te plakken.
In 1 veld te plakken? Wat wil je precies? Een group by moet wellicht wel werken ja... Als je even precies vertelt wat de query doet, wordt het misschien wat duidelijker :) Laat de overbodige functies ook even weg, dit is echt niet te lezen.

Verwijderd

Topicstarter
Verwijderd schreef op donderdag 26 januari 2006 @ 14:44:
Waaaa doe even relaxed met zo'n megaquery :| Post er ff code-tags omheen of zo :)


[...]

In 1 veld te plakken? Wat wil je precies? Een group by moet wellicht wel werken ja... Als je even precies vertelt wat de query doet, wordt het misschien wat duidelijker :) Laat de overbodige functies ook even weg, dit is echt niet te lezen.
Wat er nu gebeurt is dat als mensen zich voor meerdere nieuwsbrieven hebben ingeschreven ze voor elke nieuwsbrief opnieuw gereturned worden. Alle waarden zijn hetzelfde behalve de nieuwsbrief Ik heb met group by geprobeerd maar dat wil niet werken.

Verwijderd

GROUP by wuwebusers.id ??

[ Voor 41% gewijzigd door Verwijderd op 26-01-2006 14:50 ]


  • Vozze
  • Registratie: December 2001
  • Laatst online: 14-04 07:05
Verwijderd schreef op donderdag 26 januari 2006 @ 14:47:
[...]


Wat er nu gebeurt is dat als mensen zich voor meerdere nieuwsbrieven hebben ingeschreven ze voor elke nieuwsbrief opnieuw gereturned worden. Alle waarden zijn hetzelfde behalve de nieuwsbrief Ik heb met group by geprobeerd maar dat wil niet werken.
En waarom neem je nieuwsbrief dan mee? Aardig logisch dat je nu meerdere records krijgt. Voor elk type 1 regel.

[ Voor 9% gewijzigd door Vozze op 26-01-2006 14:52 ]

"He who thinks knows evertyhing, knows nothing" - Socrates


Verwijderd

Topicstarter
Dan krijg ik een Not a group by expression error

Verwijderd

Je wilt geen 2 records terug krijgen als een user zich voor 2 nieuwsbrieven heeft ingeschreven, maar dat het 1 record is met in het veld nieuwsbrief deze 2 nieuwsbrieven?

Waarom wil je dat :? Is erg lastig lijkt me en volgens mij wil dit ook niet eens...

  • Vozze
  • Registratie: December 2001
  • Laatst online: 14-04 07:05
Verwijderd schreef op donderdag 26 januari 2006 @ 14:51:
[...]


Dan krijg ik een Not a group by expression error
Je moet wel elk veld van je SELECT meenemen in je GROUP BY, maar dit lost het prbleem niet op. Pak anders een SQL-boek ofzo.

[ Voor 7% gewijzigd door Vozze op 26-01-2006 14:54 ]

"He who thinks knows evertyhing, knows nothing" - Socrates


Verwijderd

Topicstarter
Vozze schreef op donderdag 26 januari 2006 @ 14:49:
[...]


En waarom neem je nieuwsbrief dan mee? Aardig logisch dat je nu meerdere records krijgt. Voor elk type 1 regel.
Dit doe ik omdat als ik het via php ga doen ik me hele code moet gaan omgooien. Hoop eigenlijk dat er een manier is om dit binnen sql te ondervangen.

  • Vozze
  • Registratie: December 2001
  • Laatst online: 14-04 07:05
Lijkt me makkelijker in PHP te doen dan in SQL... Met bijvoorbeeld een loop door de recordset... Neem een string-variabele. Prop daar de nieuwsbrief in. Kijk of de volgende naam of id gelijk is aan het laatste record en concateneer aan de string variabele de volgende nieuwbrief met daartussen een komma ofzo. Wanneer je bij een nieuw persoon aankomt laat je de waarden in bijvoorbeeld een tabel zien.

[ Voor 99% gewijzigd door Vozze op 26-01-2006 15:03 ]

"He who thinks knows evertyhing, knows nothing" - Socrates


Verwijderd

Topicstarter
Verwijderd schreef op donderdag 26 januari 2006 @ 14:52:
Je wilt geen 2 records terug krijgen als een user zich voor 2 nieuwsbrieven heeft ingeschreven, maar dat het 1 record is met in het veld nieuwsbrief deze 2 nieuwsbrieven?

Waarom wil je dat :? Is erg lastig lijkt me en volgens mij wil dit ook niet eens...
Dat is nou precies wat ik wil. Vroeg me ook af of dit mogelijk is.

Verwijderd

Verwijderd schreef op donderdag 26 januari 2006 @ 14:55:
[...]


Dat is nou precies wat ik wil. Vroeg me ook af of dit mogelijk is.
Volgens mij is dit in SQL niet mogelijk of je moet je query flink gaan aanpassen... Lijkt me makkelijker in PHP. I.p.v. dat je max 1 record per user verwacht, kunnen dit er nu meerdere zijn. Zoals vozze idd aangeeft...

[ Voor 4% gewijzigd door Verwijderd op 26-01-2006 14:58 ]


  • Swa-baldie
  • Registratie: Juni 2002
  • Laatst online: 19-06-2023
wuwebusernlsubscr.category kan maar 4 waarden bevatten?

Verwijderd

Topicstarter
Swa-baldie schreef op donderdag 26 januari 2006 @ 15:05:
wuwebusernlsubscr.category kan maar 4 waarden bevatten?
Ja die kan maar 4 waardes bevatten.

  • Swa-baldie
  • Registratie: Juni 2002
  • Laatst online: 19-06-2023
Verwijderd schreef op donderdag 26 januari 2006 @ 15:09:
[...]


Ja die kan maar 4 waardes bevatten.
Dan maak je toch een smerige oplossing met inline selects...? Het is wel niet netjes maar dan heb je wel voor elkaar.
code:
1
2
3
4
5
SELECT....
,(select 'Nieuwsbrief1' from wuwebusernlsubscr where wuwebusernlsubscr.category = 48137) Nieuwsbrief1
, etc...
FROM tabeltest,wuwebusers
where tabeltest.wuid = wuwebusers.id

[ Voor 27% gewijzigd door Swa-baldie op 26-01-2006 15:18 ]


  • Vozze
  • Registratie: December 2001
  • Laatst online: 14-04 07:05
Swa-baldie schreef op donderdag 26 januari 2006 @ 15:16:
[...]


Dan maak je toch een smerige oplossing met inline selects...? Het is wel niet netjes maar dan heb je wel voor elkaar.
En als er dan op een gegeven moment meer dan 4 komen? Doe het nu gewoon in PHP.

[ Voor 5% gewijzigd door Vozze op 26-01-2006 15:19 ]

"He who thinks knows evertyhing, knows nothing" - Socrates


  • Swa-baldie
  • Registratie: Juni 2002
  • Laatst online: 19-06-2023
Vozze schreef op donderdag 26 januari 2006 @ 15:18:
[...]

En als er dan op een gegeven moment meer dan 4 komen?
Ik vroeg toch ook "zijn het er altijd 4".... en smerige oplossing...

  • Vozze
  • Registratie: December 2001
  • Laatst online: 14-04 07:05
Swa-baldie schreef op donderdag 26 januari 2006 @ 15:19:
[...]


Ik vroeg toch ook "zijn het er altijd 4".... en smerige oplossing...
Dan nog. Kunnen het er nu 4 zijn, maar in de toekomst moet dit natuurlijk blijven werken. Kun je het beter in 1 keer goed doen.

"He who thinks knows evertyhing, knows nothing" - Socrates


  • Swa-baldie
  • Registratie: Juni 2002
  • Laatst online: 19-06-2023
Vozze schreef op donderdag 26 januari 2006 @ 15:28:
[...]

Dan nog. Kunnen het er nu 4 zijn, maar in de toekomst moet dit natuurlijk blijven werken. Kun je het beter in 1 keer goed doen.
** zucht ** Ik zeg toch niet dat het van mij een mooie goeie, dynamische oplossing is. Maar het helpt hem voor nu wel van zijn probleem af.

[ Voor 20% gewijzigd door Swa-baldie op 27-01-2006 07:38 ]


Verwijderd

Met het risico met een verkeerde open deur in te trappen, is distinct geen oplossing ?
Dan word alles toch maar 1 keer getoond.

[ Voor 5% gewijzigd door Verwijderd op 27-01-2006 07:58 . Reden: ongeldig argument ]


  • Swa-baldie
  • Registratie: Juni 2002
  • Laatst online: 19-06-2023
Hij wil het toch op 1 regel hebben? Of vergis ik me nu? Had zelf nl ook aan distinct zitten denken maar dan krijg je alsnog een rij terug per nieuwsbrief per gebruiker.

Enniehoe @Therealhunter Laat eens horen hoe het ervoor staat

[ Voor 16% gewijzigd door Swa-baldie op 27-01-2006 07:56 ]


Verwijderd

Swa-baldie schreef op vrijdag 27 januari 2006 @ 07:55:
Hij wil het toch op 1 regel hebben? Of vergis ik me nu? Had zelf nl ook aan distinct zitten denken maar dan krijg je alsnog een rij terug per nieuwsbrief per gebruiker.
yep had net ook gemerkt, en de edit knop is verdwenen :)

[ Voor 2% gewijzigd door Verwijderd op 27-01-2006 07:59 . Reden: hij is terug ]


Verwijderd

mijn sql is een beetje roestig. Dus ik ben niet zeker of de syntax wel correct is.

Maar is dit geen idee voor het probleem

select * from tabel1 where waarde1 = "select distinct (Gebruikerid2) from tabel 2"

of sla ik de bal volledig mis ?

[ Voor 4% gewijzigd door Verwijderd op 27-01-2006 08:04 ]


Verwijderd

Topicstarter
Mensen bedankt voor jullie hulp. Ben er achter gekomen dat hij dmv sql niet netjes op te lossen is dus ik ga het in php oplossen.
Pagina: 1