Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

SQL query

Pagina: 1
Acties:

  • Rebbelx
  • Registratie: April 2010
  • Laatst online: 21-11 13:48
Hoi ik ben niet zo sterk in SQL en mijn statement geeft het foute resultaat.

Volgende situatie:
Ik heb 2 tabellen en ik wil uit deze beide tabellen alle data uithalen van een bepaald nummer in een kolom.
In tabel 1 komt dit nummer 5 keer voor

Als ik Select * from tabel1 where number = "hetnummer"

Krijg ik de 5 records ==> OK

Doe ik hetzelfde in tabel 2 krijg ik ook 5 records.==> OK

Nu wil ik een statement dat mijn als resultaat 10records geeft, namelijk de 5 uit tabel 1 en de 5 uit tabel 2. Ik doe dit met volgend statement maar dit geeft als resultaat 25 records...

Select * from tabel1, tabel2 where tabel1.kolomnaam = 'hetnummer' AND tabel2.kolomnaam = 'hetnummer'

Ik veronderstel dat dit niet de juiste query is ?

Graag hulp, dank bij voorbaat.

  • mpjjansen
  • Registratie: April 2005
  • Laatst online: 21-11 12:56
Ik zou het eens proberen met
Select * from tabel1 where tabel1.kolomnaam = 'hetnummer'
union
select * from tabel2 where tabel2.kolomnaam = 'hetnummer'

  • Rebbelx
  • Registratie: April 2010
  • Laatst online: 21-11 13:48
mpjjansen schreef op dinsdag 25 november 2014 @ 19:24:
Ik zou het eens proberen met
Select * from tabel1 where tabel1.kolomnaam = 'hetnummer'
union
select * from tabel2 where tabel2.kolomnaam = 'hetnummer'
Geeft opnieuw 5 records, geen 10...

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

Probeer eens een 'union all' in plaats van een 'union'

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


  • Kenhas
  • Registratie: Oktober 2006
  • Laatst online: 21-11 16:06
Zoals Tsurany zegt

Beetje lectuur : http://www.codeproject.co...y-are-UNION-and-UNION-All

2x Marstek Venus E 5.12 v153 - CT003 V117 - BMS 212 en 215


  • mpjjansen
  • Registratie: April 2005
  • Laatst online: 21-11 12:56
Rebbelx schreef op dinsdag 25 november 2014 @ 19:29:
[...]


Geeft opnieuw 5 records, geen 10...
oeps iets te snel geweest maar idd union all zou de truc moeten zijn

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Wel even over het onderliggende probleem: heb je een goeie reden om twee tabellen te hebben met (nagenoeg?) dezelfde structuur? Als iemand die zegt niet goed te zijn in SQL een query nodig heeft met een union erin dan is het meestal omdat de databasestructuur niet goed is.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Rebbelx
  • Registratie: April 2010
  • Laatst online: 21-11 13:48
NMe schreef op dinsdag 25 november 2014 @ 19:45:
Wel even over het onderliggende probleem: heb je een goeie reden om twee tabellen te hebben met (nagenoeg?) dezelfde structuur? Als iemand die zegt niet goed te zijn in SQL een query nodig heeft met een union erin dan is het meestal omdat de databasestructuur niet goed is.
Heb deze data nu allemaal mooi in 1 tabel gestoken. Ik zou nu enkel voor een bepaalde ID die meermaals in een bepaalde kolom voorkomt de verschillende in de andere kolom willen laten zien. Blijkbaar kan dit met een Distinct

Onderstaand is voorbeeld van hoe table is opgebouwd met kolom A,B,C en D
KOLOMNAAM A B C D
ID1 NICK WATER 1
ID1 NICK WATER 2
ID1 DAVID WATER 1
ID2 WERNER WIJN 1
ID2 WILLY WIJN 1

Ik zou dus van een bepaalde ID uit kolom A alle kolommen willen laten zien waar voor deze ID een andere waarde aanwezig is.

bv Select Distinct B from TABELNAAM where A = 'ID1'

Deze query zal een positief resultaat geven aangezien er voor deze ID NICK en DAVID aanwezig zijn. Maar ik zou dit ook willen toepassen op kolom C en D. Ik zou dus Select Distinct B,C,D kunnen doen maar ik heb in totaal 84 kolommen waar ik dit moet op toepassen....

Any ideas ?

  • Juup
  • Registratie: Februari 2000
  • Niet online
84 kolommen?
Geef ons eens wat meer info, zoals de hele table definitie.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Naar behoren normaliseren. :) Ik weet niet wat voor tabel dit is, maar zo te zien heb je een aparte user-tabel nodig waar je eventueel naar verwijst met een foreign key. Simpele join.

84 kolommen is trouwens ook absurd veel. Dat aantal hint er ook weer naar dat je niet weet wat normalisatie is. Ik denk dat je je beter even goed daarop kan inlezen voordat je hieraan verder gaat.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Rebbelx
  • Registratie: April 2010
  • Laatst online: 21-11 13:48
Het klopt dat dit veel kolommen zijn. Ik heb gewoon een xls gekregen en deze geimporteerd in een db. Nu wil ik daar per id het vergelijk op doen als er op kolom niveau verschil zit in de waarden. Het klopt dat dit ook mogelijk is in xls maar het leek mss makkelijker via een db en een query...

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 19:22
Mss eerst eens uitwerken in Access...? met pseudo SQL

[ Voor 16% gewijzigd door Icekiller2k6 op 26-11-2014 16:07 ]

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


  • Rebbelx
  • Registratie: April 2010
  • Laatst online: 21-11 13:48
Heb ik helaas geen tijd voor...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Wanneer je data niet goed in elkaar zit is het onderhand net zo lastig om het in Excel te doen als in SQL. Soms zelfs lastiger.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Rebbelx
  • Registratie: April 2010
  • Laatst online: 21-11 13:48
NMe schreef op woensdag 26 november 2014 @ 21:41:
Wanneer je data niet goed in elkaar zit is het onderhand net zo lastig om het in Excel te doen als in SQL. Soms zelfs lastiger.
Dat besef ik zelf ook. Helaas heb ik geen tijd om deze data allemaal naar behoren goed te zetten. Ik dacht gewoon dat via sql ik hier snel een query kon op loslaten en zo sneller verschillen kon zien. Vandaar mijn vraag.

Wanneer ik een distinct op 1 kolom doe toont, hij inderdaad de verschillen. Het probleem is dat ik dit voor 84 kolommen moet zien. Een distinct met alle 84 kolommen na elkaar en een where id = 'enhetidnummer' geeft blijkbaar ook niet de juist resultaten weer...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Nee, want die distinct moet over het hele record gelden. Als je "DISTINCT id, name, email" selecteert dan is 1, Jan, jan@example.org een ander resultaat dan 1, Piet, piet@example.org.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1