Toon posts:

[MySQL]Tabellen koppelen/Query uitvoeren

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

Verwijderd

Topicstarter
Beste Mensen, ik probeer een kennis te helpen met het volgende probleem, maar helaas ik heb niet genoeg kennis (eigenlijk gewoon geen kennis) van SQL.

Hoe kan ik uit 4 verschillende tabellen, waarin geen redundantie mag voorkomen de records aan elkaar koppelen? Deze lijst moet dmv een query op een php site getoond worden.

Tabellen:
Schilders
Schilderij
Datum
Prijs

Elke tabel bevat tot nu toe 1 veld.

Met de query die ik nu heb

$sql = 'SELECT `datum` . * , `prijs` . * , `schilderij` . * , `schilders` . * '
. ' FROM `schilders` , `datum` , `prijs` , `schilderij` '
. ' LIMIT 0, 2 ';


Klopt de lijst gewoon niet. Alvast bedankt voor de reacties!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wellicht is het handig om eens op zoek te gaan naar normalisering van databases :)

Je hebt nl. een verwijzing nodig van de ene naar de andere tabel (vaak naar primary keys en van (delen van) foreign keys). Aan de hand van deze relaties kan je weer joins gebruiken om de juiste gegevens op te vragen :)

[ Voor 6% gewijzigd door BtM909 op 19-05-2006 17:08 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
Maar is het bij normalisering niet zo dat er altijd sprake is van redundantie? Dus dat er altijd een record moet voorkomen in een tabel die ook ergens in een andere tabel te vinden is?

  • jAnO!
  • Registratie: Januari 2002
  • Laatst online: 14-12-2025

jAnO!

lalalavanillevla

normaliseren is juist het proces om redundantie tegen te gaan.

doordat je bijv. een klanttabel hebt kan je in je andere tabellen verwijzen naar die tabel, zonder in de andere tabellen steeds de klant gegevens op te slaan.

edit:

zie bijv:
databases

[ Voor 19% gewijzigd door jAnO! op 19-05-2006 17:17 ]

When some people work at a place for ten years they get ten years of experience, other people work at a place for ten years and get one year of experience ten times.


  • jAnO!
  • Registratie: Januari 2002
  • Laatst online: 14-12-2025

jAnO!

lalalavanillevla

ik weet niet precies wat je wilt met die datum maar voorbeeld koppelen is dus:

tabel schilders:
pk id
naam

tabel schilderijen:
pk id
naam
prijs
fk schilder_id

When some people work at a place for ten years they get ten years of experience, other people work at a place for ten years and get one year of experience ten times.


Verwijderd

Topicstarter
In je voorbeeld komt het veld "klantid" in beide tabellen terug. Op die manier kan je het koppelen. Mijn vraag is of je records kan koppelen zonder dat ze in beide tabellen terug te vinden zijn.

  • jAnO!
  • Registratie: Januari 2002
  • Laatst online: 14-12-2025

jAnO!

lalalavanillevla

ja dat kan, middels een koppeltabel.

schilderij_schilder
schilderij_id
schilder_id

When some people work at a place for ten years they get ten years of experience, other people work at a place for ten years and get one year of experience ten times.


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Of het nou in de tabellen zelf staat of in een koppeltabel: je moet altijd de relatie opslaan, er zit geen glazen bol in de sql server.
In een relationele database heb je relaties. Die relaties zijn niet per definitie een slecht iets of vieze redundante data, maar ze vormen juist de kracht van een relationele database. :Y)

{signature}


Verwijderd

Topicstarter
1 website in php met verbinding en queries op een database.
2 Database moet vier tabellen bevatten, elke table moet minimaal 10 items bevatten.
3 Opdracht bestaat uit 3 delen: onderwerp, queries op de database, resultaat moet in de webbrowser te zien zijn.
4 Gegevens mogen niet in meerdere tabellen voorkomen, dus geen redundantie
Dit is een deel van de opdracht. Maar ik maak uit de reactie op dat nr. 4 niet mogelijk is?

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Iets is redundant als het echt overbodig is. Een relatie is niet echt overbodig. :) Lees aub het eea over normalisatie en over de definitie van redundante data, want je kijkt te strict naar dubbele data.

Een schilderij is gemaakt door een schilder. Je hebt data van de schilder in de tabel Schilder, bijvoorbeeld geboortedatum en een schilder heeft een unieke sleutel, een id.
Een schilderij heeft dus als eigenschap onder andere het id van de schilder. Zo kan je bij een schilderij de geboortdatum van de schilder ophalen. Als je echter bij elke schilderij ook de geboortedatum van de schilder gaat zettten, dán heb je pas redundante informatie.
Als je echter het id bij een schilderij weglaat, weet je niet meer wie de schilder is en verlies je dus data. Ergo is die data niet redundant.

[ Voor 10% gewijzigd door Voutloos op 19-05-2006 22:38 ]

{signature}

Pagina: 1