Har jeg forstået det sådan at du har en tabel, som indeholder en post der hedder user_id. Denne post opdaterer du så til hver gang at indeholde et nyt bruger id samtidig med at det skulle have de gamle. Som f.eks. 1;2;3;4;5; osv.
Hvis dette er tilfældet er det en god ide at udnytte at mysql er en relationel database. Du kan altså dele det op i tre tabeller, dine to normale tabeller, og et key table, da vi har at gøre med en mange til mange relation.
tabel image
- image_id (Primær Nøgle)
- likes
- views
tabel user
- user_id (Primær Nøgle)
- .. (felter udeladt til at kunne indeholde andre data du ønsker om dine brugere)
Du kan lave tabellerne med SQL således
- -- Lav vores image tabel.
- CREATE TABLE images
- (
- image_id INT NOT NULL AUTO_INCREMENT,
- likes INT NOT NULL,
- views INT NOT NULL,
- PRIMARY KEY (image_id)
- );
-
- -- Jeg har kun tilføjet posten username, for overskuelighedens skyld, men du tilføjer selvfølgelig bare flere.
- CREATE TABLE users
- (
- user_id INT NOT NULL AUTO_INCREMENT,
- username VARCHAR(255) NOT NULL,
- PRIMARY KEY (user_id)
- );
-
- -- Vores Key Table.
- CREATE TABLE users_images
- (
- image_id INT NOT NULL,
- user_id INT NOT NULL,
- PRIMARY KEY (image_id, user_id)
- );
Sådan, nu har vi de tre tabeller. Du kan nu indsætte data, ved at insætte data i vores key table. hver gang der likes på et billede af en bruger. Lad os sige at bruger med ID 1 gerne vil like et billede som har ID nummer 45. Vi kan så med SQL indsætte data sådan her
- INSERT INTO users_images VALUES (45, 1);
Vi har nu lavet en relation imellem bruger med id 1, og billedet med id 45. Du kan selvfølgelig selv lave restriktioner i din kode, som først tjekker om brugeren har trykket like på dette billede, og hvis dette er tilfældet, så skal han måske ikke kunne like det en gang til.
Måden du får fat i dataene imellem dine to tabeller er således.
- -- Hent alle relationerne imellem de to tabeller.
- SELECT *
- FROM images AS i
- JOIN(
- SELECT ui.user_id, ui.image_id, u.username
- FROM users_images AS ui
- JOIN users AS u
- ON ui.user_id = u.user_id
- ) AS myKey
- ON i.image_id = myKey.image_id
- ORDER BY i.image_id ASC;
-
- -- Hent relationerne imellem en bruger (id 1) og alle de billeder han har en relation til
- SELECT *
- FROM images AS i
- JOIN(
- SELECT ui.user_id, ui.image_id, u.username
- FROM users_images AS ui
- JOIN users AS u
- ON ui.user_id = u.user_id
- WHERE u.user_id = 1
- ) AS myKey
- ON i.image_id = myKey.image_id
- ORDER BY i.image_id ASC;
Håber at dette hjalp dig videre