Terug naar de voorpagina
Home Nieuw Vraag & Aanbod Forums Artikelen Bedrijvengids Zoeken

Vorige | 1 | 2 | Volgende 1 - 10 van 17

   Nathan K., Particulier
27 jul 2010 15:57 
Ik heb een tabel 'credits' waar alle transacties van gebruikers worden opgeslagen.
Om hun saldo te laten zien, worden alle rijen opgeteld van een bepaalde user.

Daarnaast heb ik ook het tabel 'users'. Is het mogelijk om een kolom in 'users' te maken en daar de saldo van een gebruiker afspiegelen?

Iets met FOREIGN KEY toch?

     Aangepast op 27-07-2010 15:57 door Nathan K.
   Andre W., Unicmedia
27 jul 2010 16:07 
Je telt eerst het saldo op en daarna schrijf je dat weg in users?

   Nathan K., Particulier
27 jul 2010 17:35 
Neenee, ik wil dat het auto gaat.

   Martijn Dwars, 2Bytes
27 jul 2010 17:38 M 
Ja, daarvoor moet je SUM/COUNT en een JOIN voor gebruiken. Foreign key hoef je daarvoor niet verplicht op te geven (kan dat in MySQL uberhaupt wel?), maar in dit geval is user_id natuurlijk je foreign key.

     Aangepast op 27-07-2010 17:39 door Martijn Dwars
   Ramon Fincken, CreativePulses.nl / WebsiteFreel
27 jul 2010 18:22 
een sum/count werkt inderdaad.

Je kan ook een view aanmaken

   Nathan K., Particulier
27 jul 2010 18:30 
Mijn vraag is dus, welke instellingen moet ik gebruiken bij het aanmaken van een nieuwe rij.

   Paul G., Particulier
27 jul 2010 18:48 
Nieuwe rij is 'insert' maar je wilt toch een kolom?
En die regelmatig updaten?
Je moet je afvragen of dat slim is. Iedere keer (paar keer per dag?) alles optellen en wegschrijven of alleen totaal ophalen als een gebruiker zijn totaal wil zien?

   Nathan K., Particulier
27 jul 2010 18:58 
Haha pff,, jullie begrijpen het niet echt. Ik dacht ook dat het niet bestond, maar het bestaat.

Kijk maar naar de volgende code (van een andere script). Doe deze code in een query.
Je zult zien dat als je in 'category' een rij toevoegt, de 'id_category' van alle rijen uit 'category' een option worden in de 'id_category' van 'question_response'.

Tabellen zijn eigenlijk verbonden.


--
-- Table structure for table `category`
--

CREATE TABLE IF NOT EXISTS `category` (
`id_category` int(11) NOT NULL auto_increment,
`title` varchar(256) NOT NULL,
`order_number` int(11) default NULL,
PRIMARY KEY (`id_category`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ;

--
-- Dumping data for table `category`
--



--
-- Table structure for table `question_response`
--

CREATE TABLE IF NOT EXISTS `question_response` (
`id` int(11) NOT NULL auto_increment,
`question` varchar(256) NOT NULL,
`response` text character set utf8 collate utf8_unicode_ci NOT NULL,
`category_id` int(11) default NULL,
`order_number` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `fk_question_response_Category` (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;

--
-- Constraints for dumped tables
--

--
-- Constraints for table `question_response`
--
ALTER TABLE `question_response`
ADD CONSTRAINT `question_response_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `category` (`id_category`) ON DELETE CASCADE ON UPDATE NO ACTION;

     Aangepast op 27-07-2010 19:02 door Nathan K.
   Paul G., Particulier
27 jul 2010 20:24 
Je zult zien dat als je in 'category' een rij toevoegt, de 'id_category' van alle rijen uit 'category' een option worden in de 'id_category' van 'question_response'.
Wat je hier schrijft kan ik niet volgen.
De code wel
Wat jij wil met waarden uit een tabel in een ander zetten kan niet op deze manier.
Een constraint checked alleen of een veld nog in de andere tabel voorkomt tijdens een update en een delete.
Kan ook gevaarlijk zijn want in jouw voorbeeld kun je honderden records in question_response hebben en als je dan in category een (1) record weggooit (per ongeluk?) dan ben je alle records kwijt in de andere tabel die hetzelfde id hadden. En je krijgt geen waarschuwing dus je weet het op dat moment niet!

   R. Kapitein, Smoved
27 jul 2010 20:33 
Daarnaast heb ik ook het tabel 'users'. Is het mogelijk om een kolom in 'users' te maken en daar de saldo van een gebruiker afspiegelen?


Ja, met triggers. Voorbeeldje:

DROP TRIGGER IF EXISTS saldoupdate
DELIMITER //
CREATE TRIGGER saldoupdate AFTER INSERT ON saldotabel
FOR EACH ROW BEGIN
UPDATE usertabel SET saldo = saldo + NEW.saldowijziging WHERE userID = NEW.userID;
END
//
DELIMITER ;


Zelfde doe je met een update of delete van een row.

     Aangepast op 27-07-2010 20:34 door R. Kapitein

Vorige | 1 | 2 | Volgende 



 
© Copyright TargetMedia 2001-2012 | Mobile | Premium SMS | Micropayments | Muziek downloaden | Ringtones Bekijk bezoekers statistieken RSS feed