advies 1 record selecteren uit meerdere records met zelfde user_id

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bas de jong

Bas de jong

14/01/2013 13:20:36
Quote Anchor link
ik ben een functie aan het maken die
meerdere records uit een tabel haalt op basis van ordernummer met allemaal hetzelfde user_id

nu wil ik uit het queryresultaat het user_id als 1 enkele waarde halen
dat doe ik op de volgende manier

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
    function get_userid_verkoopdata ($order_id){
    $get = mysql_query('SELECT user_id FROM verkoopdata WHERE factuurnummer='.$order_id);
                while ($get_row = mysql_fetch_assoc($get)){
                     $userid = $get_row['user_id'];
                     break;
                    }

                    return $userid;
    }

?>

het werkt maar ik ben benieuwd of ik dit nu niet met een omweg aan het doen ben
mvg bas
 
PHP hulp

PHP hulp

23/09/2021 10:32:48
 
Moose -

Moose -

14/01/2013 13:22:39
Quote Anchor link
http://php.net/manual/en/function.mysql-fetch-row.php

Je kunt wel zien dat je zelf even hebt gekeken

Edit, je kan gewoon dit doen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$get_row = mysql_fetch_assoc($get);

zonder de while loop, dan krijg je de eerstvolgende rij
Gewijzigd op 14/01/2013 13:24:10 door Moose -
 
Bas de jong

Bas de jong

14/01/2013 13:27:55
Quote Anchor link
hm ok dus ik kan de while loop gewoon weg laten.
ik wist ergens wel dat ik het netter kon doen maar nog niet precies wat.
bednkt voor de tip
 
Erwin H

Erwin H

14/01/2013 13:42:08
Quote Anchor link
Zet er dan ook nog een LIMIT 1 achter. Als je toch maar 1 record ophaalt, hoef je de rest ook niet te selecteren.

Overigens riekt dit naar een niet volledig genormaliseerde database. Als de combinatie van factuurnummer en userid altijd gelijk is, dan kan je dat efficienter doen.
 
No One

No One

14/01/2013 13:46:37
Quote Anchor link
hij zoekt een klantnummer bij een order....is dat erg? zou ik ook doen....factuurtabel met basisfactuurgegevens..en dan factuurregels in een extra tabel...maar goed :)
 
Erwin H

Erwin H

14/01/2013 13:50:42
Quote Anchor link
Normaal gesproken
klant -> order -> factuur

Waarbij dus 1 klant meerdere orders kan hebben en 1 order meerdere facturen.
Een factuur zit echter altijd maar vast aan 1 order en een order zit altijd maar vast aan 1 klant.

Met andere woorden, als je je database echt goed genormaliseerd hebt dan weet je uit factuurnummer, via het ordernummer het klantnummer. Er is dus geen noodzaak om klantnummer bij factuurnummer op te slaan, dat is dubbele data en daarmee een mogelijk probleem bij updates.

Anyway, er is nog een mogelijkheid dat 'verkoopdata' in dit geval een view is waardoor het klantnummer er al bij komt. In dat geval is er dus niets aan de hand. Anders, zoals ik zeg, riekt het ernaar dat de normalisatie beter kan.
 
Bas de jong

Bas de jong

14/01/2013 18:49:02
Quote Anchor link
tabel verkoopdata gegevens:
[geplaatste orders zonder betaalbevestiging met informatie over winkelwageninhoud]

deze tabel wordt geupdate via de website


tabel transactiedata gegevens:
[betaalbevestigingen van bankserver geplaatse orders zonder gegevens over de winkelwageninhoud]

deze tabel wordt geupdate met $_POST['data'] van de bank

de tabel transactiedata bevat de orders die verwerkt mogen worden.
en de tabel verkoopdata bevat de bijbehorende informatie mbt de winkelwageninhoud

er hoeft dus niet genormaliseerd te worden

mvg bas



Toevoeging op 14/01/2013 18:59:41:

factuurnummer ---->ordergegevens----->ordergegevens zijn klantnummer en bestelde producten

elke productrecord bevat een user_id en product_id

op basis van deze 2 id nummers worden de klant en productgegevens uit de bijbehorende tabellen gehaald.

waarbij ik voor elke record uiteraard het product id moet hebben maar van de klant heb ik er maar 1 nodig uiteraard

ik denk niet dat er een probleem is met de referentiele integriteit
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.