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

kruistabel in MySQL met PHP

Pagina: 1
Acties:

  • gepebril
  • Registratie: November 2001
  • Laatst online: 28-03-2023
Hallo!

Ik zit met het volgende probleem. Ik kom niet op het volgende SQL commando om netjes
uit te draaien wat jansen allemaal gekocht heeft, hoeveel het kostte en met welke munt.
Alle tabbellen bestaan al er er hoeven geen nieuwe tabellen bij. Alleen een mooi overzicht.
Dus eigenlijk niet alleen het Select .... from
maar ook nog hoe je dat eruit vist in PHP $row['........'] etc

Alvast super bedankt. Het zal wel een standaard klusje zijn, maar ik kom nergens een degelijk voorbeeld tegen op het Net met kruistabellen.

tabellen

tabel_personen
naam_id, FamNaam
1, Jansen
2, Pieterse

table_album
album_id, AlbumNaam
1, Madonna - Like a virgin
2, Prince - Like a dove

table_curr
curr_id CurrNaam
1, USD
2, EUR

transactie_table
trans_id, naam_id, datum, curr, hoeveel,
1, 2, 2008-09-01 12:13:11, 1, 15
2, 1, 2008-08-01 11:01:01, 2, 10


gr,

Albert

  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Ik denk dat je al een stuk verder komt door je te verdiepen in Joins.

  • MuisM4t
  • Registratie: Mei 2007
  • Niet online
Ik zou in ieder geval beginnen met een query waarmee je alle gegevens die je eruit wil halen er ook uit haalt. Test die dan eens (offline of via phpmyadmin oid) .
Ga dan kijken hoe je deze query kunt uitvoeren met php en de uitkomst ervan kunt verwerken.
Mocht je met een van de volgende stappen vastlopen kun je:
1)zelf goed kijken waar je denkt dat de fout zit
2)nalezen hoe het ook al weer moest
3)hier een topic openen.

  • Boss
  • Registratie: September 1999
  • Laatst online: 13:54

Boss

+1 Overgewaardeerd

Een kruistabel heb je hier ook totaal niet nodig als ik de vraag zo lees. Lijkt me eerder een simpele query met een paar joins.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Frash
  • Registratie: Mei 2002
  • Laatst online: 13:41
Enkeltje sqlzoo.net voor jou, kan je lekker oefenen. Met name hoofdstuk 4, 5 en 6. Voeg ?answers=1 toe aan einde van URL om te spieken.

  • gepebril
  • Registratie: November 2001
  • Laatst online: 28-03-2023
Alvast dank heren voor het meedenken.
Voor de volledigheid, ik programmeer al een tijd in PHP en MYSQL en ik kan dit probleem wel oplossen, alleen dan wordt het niet de efficienste methode. Ik zou namelijk alle records binnenhalen met een WHERE op Jansen en daarna voor elke regel een query doen naar currency tabel, album tabel enzo. Joins heb ik geprobeerd, maar ik krijg steeds meer resulaten terug dan er records zijn in mijn transactietabel. Ik had verwacht dat hier een eenvoudige generieke 'formule' voor bestond. Iets in de trend van vroeger merkwaardige producten (a+b)^2 = a^2 +2ab +b^2. Maar uit de antwoorden te lezen blijkt dat niet het geval te zijn.
@Frash ik zal hier even naar kijken.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 07:40

Creepy

Tactical Espionage Splatterer

En wat kreeg je dan teveel terug toen je joins probeerde? Het lijkt erop dat je een verkeerde join conditie gebruikte. Dus wat heb je nu zelf al geprobeerd en wat ging daar niet goed mee?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • gepebril
  • Registratie: November 2001
  • Laatst online: 28-03-2023
Hallo,

Ik denk dat wat ik wil niet mogelijk is. Ik kan alle tabellen wel aan elkaar koppelen, maar wat IK WERKELIJK wil is dat alle nummerieke waarden in de hoofdtabel worden ingevuld met de waarden uit de andere tabellen. Ik denk dat niet op die manier lukt, anders had er ook wel iemand gereageerd met de oplossing en niet hints dat het misschien zo zou moeten......

Alvast heel erg bedankt voor het meedenken. Hopelijk in SQL6 en tot die tijd gewoon tabel voor tabel de informatie verzamelen en invullen. Computers zijn tegenwoordig toch f*cking snel, dus optimalisatie is met dit soort zaken toch een beetje uit de tijd.

gr,

Albert

[ Voor 9% gewijzigd door gepebril op 16-05-2008 16:15 ]


  • TheBlasphemer
  • Registratie: September 2004
  • Laatst online: 13-11 13:20
Jeetje man, lees eens een SQL boek ofzo, heb je uberhaupt wel eens wat gelezen over joins?
SELECT * FROM tabel_personen p, table_curr c, transactie_tabel t
krijg je alle mogelijke combinaties van de tabellen
SELECT * FROM tabel_personen p, table_curr c, transactie_tabel t WHERE t.naam_id=p.naam_id AND t.curr=c.curr_id
filter je alles waarbij je waarden "matchen"
en door die * aan te passen kun je dan alleen de velden die jij wilt terugkrijgen.

Let wel: dit is waarschijnlijk niet de meest efficiente methode, en sla alstjeblieft wel even een SQL boek open om er nette joins van te maken.

Oh, en ik heb je albums tabel weggelaten omdat die nergens gebruikt wordt...

[img=http://www.web2messenger.com/smallstatus/w2m/theblasp.png]


  • AaroN
  • Registratie: Februari 2001
  • Laatst online: 16-08-2023

AaroN

JayGTeam (213177)

Je kunt sowieso nooit uit dit model halen wat Jansen gekocht heeft want dat wordt namelijk niet opgeslagen. Je zou een koppeltabel moeten maken die een transactie koppelt met items.

JayGTeam (213177)


Verwijderd

Of aan de transactie tabel een veld 'album' toevoegen...

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

gepebril schreef op donderdag 24 april 2008 @ 13:03:
Alvast dank heren voor het meedenken.
Voor de volledigheid, ik programmeer al een tijd in PHP en MYSQL en ik kan dit probleem wel oplossen, alleen dan wordt het niet de efficienste methode. Ik zou namelijk alle records binnenhalen met een WHERE op Jansen en daarna voor elke regel een query doen naar currency tabel, album tabel enzo. Joins heb ik geprobeerd, maar ik krijg steeds meer resulaten terug dan er records zijn in mijn transactietabel.
Dat kan alleen met outer en/of cross joins. Hou je eens bij inner joins (en ga een boek over de materie lezen :X ).

Professionele website nodig?


  • AaroN
  • Registratie: Februari 2001
  • Laatst online: 16-08-2023

AaroN

JayGTeam (213177)

Verwijderd schreef op donderdag 22 mei 2008 @ 23:28:
Of aan de transactie tabel een veld 'album' toevoegen...
Dat werkt alleen als je maximaal een soort album per transactie aan kunt schaffen ;)

JayGTeam (213177)


Verwijderd

Wel als je PK alleen transactie_id is, niet als je daar ook nog album aan toevoegt.
Ik weet 't, da's vloeken in deze kerk, maar lang niet iedereen gebruikt synthetische PK's (autoincrement/identity/whatever)... ;)
Pagina: 1