[sql-query] Wie helpt mij met deze query (mysql)?

Pagina: 1
Acties:

  • Skef
  • Registratie: April 2001
  • Laatst online: 01-09 15:32

Skef

Ik scheer.me

Topicstarter
Ik heb 6 tabellen:

table "club":
- id
- naam

table "wedstrijdschema":
- id
- id_thuis_csd
- id_uit_csd
- id_wedstrijdsoort

table "wedstrijdsoort":
- id
- omschrijving

table "divisie":
- id
- omschrijving

table "seizoen":
- id
- omschrijving

table "csd":
- id
- id_club
- id_divisie
- id_seizoen

wedstrijdschema.id_thuis_csd = csd.id
wedstrijdschema.id_uit_csd = csd.id
wedstrijdschema.id_wedstrijdsoort = wedstrijdsoort.id
csd.id_club = club.id
csd.id_divisie = divisie.id
csd.id_seizoen = seizoen.id

Ik wil nu graag een query hebben die het volgende doet: Hij geeft aan de hand van gegevens welke in "wedstrijdschema" staan weer, wie tegen wie moet spelen en op welke datum (en dit dan met concat in 1 field: omschrijving, maar dit kan ik zelf nog wel).

Waar het mij dus om gaat: hoe krijg ik, zonder tussenkomst van PHP, de gegevens uit "seizoen", "club" en "divisie" beschikbaar in "wedstrijdschema" (dus via de tabel "csd")?

Ik had eerder dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT
  WSS.id,
  CONCAT('[', seizoen.omschrijving, '] ', TCL.naam,'
 - ',UCL.naam,' (',DATE_FORMAT(WSS.datum,'%d-%m-%Y'),')') AS omschrijving
FROM
  wedstrijdschema WSS,
  seizoen
INNER JOIN
  club TCL
ON
  WSS.id_thuis_club = TCL.id
INNER JOIN
  club UCL
ON
  WSS.id_uit_club = UCL.id
WHERE
  WSS.id_seizoen = seizoen.id
ORDER BY
  seizoen.omschrijving DESC,
  TCL.naam ASC,
  UCL.naam ASC,
  WSS.datum ASC

Dit klopt niet meer, omdat ik de tabel "csd" er bij heb gemaakt (het is wel makkelijk om per seizoen een club aan een seizoen en een divisie te kunnen koppelen, zodat je oude gegevens ook kan bewaren)...

Wie o wie? :P :P

"Computer games don’t affect kids: I mean if Pac-Man affected us as kids, we’d all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."


  • Skef
  • Registratie: April 2001
  • Laatst online: 01-09 15:32

Skef

Ik scheer.me

Topicstarter
Het is dus de bedoeling dat dit er komt te staan:

CONCAT('[', seizoen.omschrijving, '] ', TCL.naam,' (',TCL_divisie.omschrijving,') - ',UCL.naam,' (',UCL_divisie.omschrijving,') ',(',DATE_FORMAT(WSS.datum,'%d-%m-%Y'),')') AS omschrijving

Voorbeeld-output:
code:
1
[2001-2002] Ajax (Eredivisie) - PSV (Eredivisie) (15-02-2001)

"Computer games don’t affect kids: I mean if Pac-Man affected us as kids, we’d all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Schrijf de inner joins eens uit, zodat je alleen een
code:
1
2
3
4
5
6
SELECT
  [iets]
from
  [iets]
where
  [iets]

query krijgt. Dan zou alles al een stuk beter en duidelijker voor jezelf moeten worden.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Je zult er in iedergeval op uitkomen dat je de tabellen club en divisie twee keer nodig hebt in je from clause. Alias je tabellen. Bedenk goed welke tabel je als base table gaat gebruiken, mijn suggestie is wedstrijdschema. Ga vandaaruit de tabellen erbij zoeken die je nodig hebt, teken daarvoor een soort boom structuurtje. Suc6

  • Skef
  • Registratie: April 2001
  • Laatst online: 01-09 15:32

Skef

Ik scheer.me

Topicstarter
Op vrijdag 14 juni 2002 10:35 schreef Goodielover het volgende:
Je zult er in iedergeval op uitkomen dat je de tabellen club en divisie twee keer nodig hebt in je from clause. Alias je tabellen. Bedenk goed welke tabel je als base table gaat gebruiken, mijn suggestie is wedstrijdschema. Ga vandaaruit de tabellen erbij zoeken die je nodig hebt, teken daarvoor een soort boom structuurtje. Suc6
Ik heb nodig (denk ik):
1x "wedstrijdschema"
2x "csd" (wedstrijdschema.id_thuis_csd, wedstrijdschema.id_uit_csd)
2x "club" (beide op "csd")
2x "divisie" (beide op "csd")
1x "seizoen" (op wedstrijdschema.id_seizoen)

De tabel wedstrijdschema heb ik inmiddels weer aangepast, nu is de tabel zo:
- id
- id_thuis_csd
- id_uit_csd
- id_wedstrijdsoort
- id_seizoen (deze heb ik toegevoegd, omdat een wedstrijd ook in een bepaald seizoen gespeeld wordt, en dit was iets makkelijker in mijn uitvoer-script)

In het uitvoer-script heb ik het al voor mekaar, door gewoon gebruik te maken van PHP en mysql samen (meerdere queries)...

Dit is in dit geval (de zgn. "open-query" binnen ons CMS) niet mogelijk, hier moeten in 1 query alle kenmerken van een bepaald record getoond worden...

edit: de uitvoer is te bezichtigen op http://www.degraafschap.nl

"Computer games don’t affect kids: I mean if Pac-Man affected us as kids, we’d all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

OK joinen dan!
Heb je nu nog een probleem?

  • Skef
  • Registratie: April 2001
  • Laatst online: 01-09 15:32

Skef

Ik scheer.me

Topicstarter
Op vrijdag 14 juni 2002 13:01 schreef Goodielover het volgende:
OK joinen dan!
Heb je nu nog een probleem?
Welke join kan ik nu het beste pakken? (ben nog nie zo'n heel grote held op join-gebied :P )......

"Computer games don’t affect kids: I mean if Pac-Man affected us as kids, we’d all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Je zet in je from clause gewoon de tabellen die je hebt. Dus als je ze 2x nodig hebt dan 2x vermelden. Elke tabel geef je een alias.
In de where verbind je de tabellen met de keys
eventueel een order by er op en klaar!

  • Skef
  • Registratie: April 2001
  • Laatst online: 01-09 15:32

Skef

Ik scheer.me

Topicstarter
Bedankt!

Ik ga er nu weer mee stoeien, als ik 'm af heb, post ik 'm hier wel....

"Computer games don’t affect kids: I mean if Pac-Man affected us as kids, we’d all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."


  • Skef
  • Registratie: April 2001
  • Laatst online: 01-09 15:32

Skef

Ik scheer.me

Topicstarter
Ik heb 'm:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
SELECT
  WSS.id id,
  CONCAT('[',SEIZ.omschrijving,'] ',TCL.naam,' -
 ',UCL.naam,' (',DATE_FORMAT(WSS.datum,'%d-%m-%Y'),')') AS omschrijving
FROM
  wedstrijdschema WSS,
  csd TCSD,
  csd UCSD,
  club TCL,
  club UCL,
  divisie TDIV,
  divisie UDIV,
  seizoen SEIZ
WHERE
  WSS.id_thuis_csd = TCSD.id
AND
  WSS.id_uit_csd = UCSD.id
AND
  WSS.id_seizoen = SEIZ.id
AND
  TCSD.id_club = TCL.id
AND
  UCSD.id_club = UCL.id
AND
  TCSD.id_divisie = TDIV.id
AND
  UCSD.id_divisie = UDIV.id
ORDER BY
  SEIZ.omschrijving DESC,
  TCL.naam ASC,
  UCL.naam ASC,
  WSS.datum ASC

Probleem opgelost! Thanx!

"Computer games don’t affect kids: I mean if Pac-Man affected us as kids, we’d all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Je mist de join op seizoen naar csd.
Deze moet je wel maken anders krijg je volgend jaar een probleem

  • Skef
  • Registratie: April 2001
  • Laatst online: 01-09 15:32

Skef

Ik scheer.me

Topicstarter
Ik zie nu wat ik wil zien: alle wedstrijden die tot nu toe gespeeld zijn...

Dus ook van vorig seizoen, en voor het komende seizoen (wanneer komt dit trouwens beschikbaar bij de knvb?)

Als je op de site van de graafschap kijkt, en dan bij "eerste elftal" en dan "stand eredivisie", zul je zien dat daar de scheiding per seizoen goed werkt.

Maar hoe had jij je die JOIN voorgesteld dan (welk doel enz.)? En kun je 'm er ff tussenbakken bij mijn query?

"Computer games don’t affect kids: I mean if Pac-Man affected us as kids, we’d all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."

Pagina: 1