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

Vergelijken tabellen MYSQL

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi iedereen,

ik ben bezig met een nogal ingewikkeld script en het wilt niet vorderen.

Het houdt beknopt in dat ik dagelijks gegevens van diverse XML feeds (aangeleverd door klanten) inlaadt in een tabel in mijn database.
Vervolgens ga ik deze gegevens vergelijken (op wijzigingen) met de aangeleverde gegevens van de voorgaande dag.

Daarom vraag ik jullie wat tips, niet om complete scripts te schrijven!

Hieronder een situatieschets:

1) Ik heb een website gebouwd waarop advertenties (aanbiedingen) worden geplaatst van klanten, deze advertenties krijgen
bij het INSERT’en in de database een eigen ID nummer.
Daarnaast krijgen ze ook een uniek ID wat een klant zelf meegeeft in zijn/haar XML feed.

2) Ik krijg van een klant een XML feed (zoals hier boven vermeld) met zijn voorraad aanbiedingen
die ik vervolgens in een aparte tabel in mijn database laadt.

3) Ik wil nu graag zijn huidige aanbiedingen (van de voorgaande dag) op de website vergelijken met de resultaten
die ik heb gekregen via zijn XML feed, bijvoorbeeld op prijs-, of motoruurwijzigingen.

Dit vergelijk doe ik door de machine op te zoeken a.d.h.v de klant zijn eigen ID nummer
in mijn eigen voorraadlijst en vervolgens de gegevens van beide tabellen te gaan vergelijken.

Wat is de meest efficiente en juiste manier om beide tabellen (met een verschillende structuur, wat helaas niet anders mogelijk was) te vergelijken?

Via "cases" of "if" statements?

Graag hoor ik jullie mening... indien de situatieschets niet duidelijk genoeg is hoor ik dit graag!

  • mrwiggs
  • Registratie: December 2004
  • Laatst online: 09:11
Waarom vergelijk je het niet tijdens het importeren in je programmeertaal? Lijkt me een stuk gemakkelijker.

  • Niet Henk
  • Registratie: Oktober 2010
  • Laatst online: 23-10 06:46
Je kan voor het importeren ook controleren of er al een identieke entry is met SELECT COUNT(*) FROM .... WHERE de ingevulde waarden gelijk zijn aan de in te vullen waarden.

Maar mij lijkt het idd het handigst om dit in je programmeertaal te doen. Zonder meer specifieke informatie over wat je nu al hebt en precies wilt, is het lastig je te helpen.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Twee tabellen vergelijken, die een kolom delen? Dat is een simpele join. SELECT ... WHERE a.KlantID = b.KlantID. Ik snap niet waarom je veronderstelt dat de structuur overeen moet komen. Wel belangrijk: index op KlantID kolommen.

Opzoeken tijdens het inladen, zoals hierboven beschreven is ook een optie. Misschien iets minder elegant (gestructureerde data hoort in een database) maar ook geen groot probleem.

Ik vermoed eerder dat je fundamentele probleem een database normalisatie probleem is. Je hebt producten waarvan sommige aspecten constant zijn (leverancier, beschrijving?) en andere aspecten zeker niet (prijs, motor-uur). Dat hoort eigenlijk in twee tabellen. Bij de tweede tabel hoort dan ook een datum waarop die variabele data geldig was. Je kunt dan niet alleen tussen de laatste twee data vergelijken, maar zelfs een compleet prijsverloop laten zien (zie T.net PriceWatch)

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein