Query gebruiken om een nieuwe Query te maken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Carl Zwanenburg

Carl Zwanenburg

05/06/2013 08:59:56
Quote Anchor link
LS, de titel is wat eigenaardig, maar ik zoek het volgende:

Ik zoek een SQL script waarmee ik een query uitvoer op een tabel uit de database. De verkregen data gebruik ik als voorwaarde op een nieuwe query uit te voeren op een andere tabel.

Ik zal het in het WHERE ..... gedeelte moet zoeken van de SELECT.

Ik hoop dat iemand al eens vaker zoiets heeft gemaakt!

Ik hoor het graag.

M.vr.gr. Carl.
 
PHP hulp

PHP hulp

23/12/2024 04:08:01
 
Erwin H

Erwin H

05/06/2013 09:06:40
Quote Anchor link
Je bedoelt gewoon een subquery of join dus?
Als je iets meer info geeft is het wat makkelijker, maar in grote lijnen zal je naar zoiets moeten kijken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT a.kolom1, a.kolom2, b.kolom3
FROM (
  SELECT kolom1, kolom2
  FROM tabel1
  WHERE ...
) a
LEFT JOIN tabel2 b ON a.kolom1 = b.kolom3

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT kolom1, kolom2, kolom3
FROM tabel1
WHERE kolom3 IN (
  SELECT kolom4
  FROM tabel2
  WHERE ...
)
 
Carl Zwanenburg

Carl Zwanenburg

05/06/2013 19:00:14
Quote Anchor link
Iets meer informatie......

Tabel 1 heeft boekstuknummers met subcode die sommige boekstuknummers kan bundelen.

b.v. nummer 1000 alg. kosten code A subcode A1
1001 loon kosten code A subcode A2
1002 adm. kosten code A subcode A2
etc.

Tabel 2 bevat transacties waaraan de boekstuknummers worden toegevoegd.
b.v. € 100,00 boeken op kostenplaats nr. 1000
€ 150,00 boeken op kostenplaats nr. 1001
€ 190,00 boeken op kostenplaats nr. 1002

Ik wil nu een query maken op bepaalde kosten uit tabel 2

Daarvoor wil ik weten welke kosten geboekt zijn op boekstuknummers 1001 en 1002

Dan wil ik dus een query met de boekstuknummers 1001 en 1002 (tabel 2) op basis van alle boekstuknummers met subcode A2 uit tabel 1.

Ik denk dus dat een JOIN moet werken met:

SELECT Boekstuknummer
FROM Tabel1
WHERE Subcode = 'A1'

en dan komt de JOIN functionaliteit !!!!!!!

Vergelijk deze dan met:

SELECT Transacties
FROM Tabel2
WHERE Kostenplaats = het kostenplaats verkregen uit de vorige SELECT.

Of kan ik dan toch beter je tweede voorbeeld gebruiken met de geesten SELECT ?????

M.VR.GR.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/06/2013 19:10:38
Quote Anchor link
Je geeft te weinig informatie.
Maar:
Quote:
Tabel 1 heeft boekstuknummers met subcode die sommige boekstuknummers kan bundelen.

Het feit dat je boeknummers op een bepaalde subcode bundelt, zou kunnen betekenen dat je beter daarvoor een aparte tabel kan maken.
 
Erwin H

Erwin H

05/06/2013 19:32:05
Quote Anchor link
Zonder meer duidelijkheid over tabellen, kolommen en voornamelijk op welke manier de twee tabellen aan elkaar kunnen worden gekoppeld is het moeilijk om duidelijk aan te geven hoe je het moet doen. Het kan zowel met een join of met een subquery overigens.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/06/2013 20:03:29
Quote Anchor link
In 99% van de gevallen kan je een WHERE IN subquery beter omschrijven naar een (INNER) JOIN.
In het algemeen is het gewoon zo, dat als je een JOIN op dezelfde tabel nodig hebt als in die de FROM staat, het database model niet goed is.
 
Carl Zwanenburg

Carl Zwanenburg

05/06/2013 21:00:16
Quote Anchor link
Een hoop vragen ook weer terug.

Maar het gaat om slechts 2 tabellen, waarbij 1 waarde gevraagd wordt uit de eerste tabel. Die moet dan vergeleken worden met een tweede tabel en dan daaruit een lijst met informatie genereren. Omdat een subquery in de SELECT component slechts 1 waarde mag zijn. (het levert dus ook maar 1 waarde op die ik moet gebruiken) zou dit een goede oplossing zijn.

De JOIN biedt wel veel meer mogelijkheden, maar is wat moeilijker te lezen. Ik ga eerst even proberen met de subquery en kijk of ik de juiste informatie krijg.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.