[mysql] Join's

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • _trickster_
  • Registratie: Mei 2005
  • Laatst online: 12:21
Goeie middag,

ik ben bezig met een website, met een databaseje er achter,
maar ik kom er even niet meer uit

ik heb 4 tabellen waar ik 1 tabel uiteindelijk van wil maken,

ik heb 1 tabel `producten` met product nummers, product namen waarbij de product nummers uniek zijn, deze bevat 4782 producten.

ik heb 1 tabel `groepnamen` met product nummers, en groepnamen. die bevat 272 records,

ik heb 1 tabel `product_omschrijvingen` met daarin ook weer de productnummers en wat omschrijvings velden. met 4782 records

en ik heb 1 tabel `prijzen` met daarin productnummers en een kolom prijzen. met 4600 records


ik wil graag al deze tabellen bij elkaar voegen, waarbij ik totaal op 4782 records moet komen.

welke combinatie ik ook probeer met Left / inner / right join, ik kom altijd op iets van 5000 producten of meer uit, wat helemaal niet kan.

ik heb geprobeerd om simpelweg eerst 1 tabel te combineren in een view, maar ook dan kom ik op 4800 producten uit of meer.

ik zal vast iets fout doen, maar kom er zo niet meer uit.
ik heb de help van mysql zelf helemaal door gelezen maar ik zie door de bomen het bos niet meer,
ik hoop dat ik het zo duidelijk mogelijk heb uit gelegt,
eventueel kan ik mensen toegang verlenen tot de database.

Alvast Bedankt.

Acties:
  • 0 Henk 'm!

  • Kettrick
  • Registratie: Augustus 2000
  • Laatst online: 11:38

Kettrick

Rantmeister!

Wat heb je tot nu toe geprobeerd, plak eens wat sql :)

Acties:
  • 0 Henk 'm!

  • Motrax
  • Registratie: Februari 2004
  • Niet online

Motrax

Profileert

Als eerste: je zal toch je queries moeten laten zien :)

Als tweede: waarom kan je niet op meer dan 4782 records komen? Weet je wel heel zeker dat je productcodes uniek zijn per tabel en ook uniek zijn over de tabellen heen? Heb je de product code opgenomen in de primary key is het daarmee afgedwongen per tabel?

Edit:
En ga gewoon op zoek naar de oorzaak, niet telkens je queries proberen aan te passen zodat je aan die 4782 komt.

Ga eens controleren met een NOT EXIST bijvoorbeeld of je 'extra' product codes hebt die niet in de producten tabel staat, maar wel in de andere tabellen?

[ Voor 30% gewijzigd door Motrax op 07-11-2008 13:32 ]

☻/
/▌
/ \ Analyseert | Modelleert | Valideert | Solliciteert | Generaliseert | Procrastineert | Epibreert |


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 22:13

MueR

Admin Tweakers Discord

is niet lief

Je bedoelt dat je een tabel Groepnamen hebt, waarbij je een naam van een group aan een product koppelt? Dan kan het wel ja, als een product in meerdere groepen zit. Je zou dat kunnen omzeilen met een SELECT DISTINCT, of je database goed op zetten met een koppeltabel.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Tuinstoel
  • Registratie: Juli 2004
  • Laatst online: 11-01 16:36
Als dit een eenmalige actie is, kun je dat niet een stukje omzeilen met een php scriptje? Dus gewoon ff alle records opvragen, betreffende gegevens opvragen uit array's of tabellen en dat samen in een nieuwe tabel rammen? Of interpreteer ik je vraag niet goed?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Voeg de joins 1 voor 1 toe en ontdek gewoon waar je een 1:N relatie hebt? Groepeer op je foreign key en kijk naar having count(*) > 1? Etc. etc.

Zonder queries of beschrijvingen van wat je gedaan hebt lijkt het gewoon of je ff snel je vraag hier dumpt...

{signature}


Acties:
  • 0 Henk 'm!

  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 08-07 14:27
Misschien zitten producten wel in meerdere groepen, hebben meerdere omschrijvingen en ik vind het wat vaag dat ze niet allemaal een prijs hebben.

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?


Acties:
  • 0 Henk 'm!

  • _trickster_
  • Registratie: Mei 2005
  • Laatst online: 12:21
ik ben nu niet thuis, maar zodra ik thuis ben zal ik de query's even posten.
elk product zit maar in 1 groep, en heeft ook maar 1 product en omschrijving.
van elk product heb ik een omschrijving ( de 2 tabellen hebben ook even veel records ). ik heb minder prijzen dan producten dus als het goed is moet er in de final tabel een aantal records leeg zijn in de kolom prijzen, er zijn ook als het goed is geen prijzen waar ik geen peoduct van heb, al is dit wel zo, dan mij hij die prijs niet toevoegen als een nieuwe record in de nieuwe tabel.

de tabel wordt 1 malig gebruikt om deze te exporteren naar een nieuwe tabel.

ik zal z.s.m. de querys die ik heb hier posten.

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Als het echt zo is als je omschrijft, zou ik gewoon omschrijvingen en prijzen toevoegen aan de producttabel. En anders kun je het doen met een simpele where clause waarbij je de select uitvoert op meerdere tabellen. Je hebt hiervoor geen ingewikkelde join nodig.

Acties:
  • 0 Henk 'm!

  • Motrax
  • Registratie: Februari 2004
  • Niet online

Motrax

Profileert

_trickster_ schreef op vrijdag 07 november 2008 @ 15:16:
Ik heb minder prijzen dan producten dus als het goed is moet er in de final tabel een aantal records leeg zijn in de kolom prijzen, er zijn ook als het goed is geen prijzen waar ik geen peoduct van heb, al is dit wel zo, dan mij hij die prijs niet toevoegen als een nieuwe record in de nieuwe tabel.

de tabel wordt 1 malig gebruikt om deze te exporteren naar een nieuwe tabel.

ik zal z.s.m. de querys die ik heb hier posten.
Ik lees wat aannames die je moet controleren.
1) De prijs tabel is gelijk qua product codes in de producten tabel. Ooit er aan gedacht dat een product misschien is weggegooid, maar de prijs niet?
2) Elk product heeft maar 1 prijs. Wat als er meerdere prijzen zijn? Krijg je meerdere regels voor de product code van. Tenzij je een lookup hebt gedaan waarbij alleen het eerste resultaat toegevoegd wordt, maar dan weet je niet welk resultaat uit de resultaatset is gepakt en waarom.

Controle controle... ;)

☻/
/▌
/ \ Analyseert | Modelleert | Valideert | Solliciteert | Generaliseert | Procrastineert | Epibreert |

Pagina: 1