Mysql
 sql >> Base de données >  >> RDS >> Mysql

colonne mySQL pour contenir le tableau

MySQL ne prend pas en charge le stockage des tableaux. Cependant, vous pouvez utiliser une deuxième table pour émuler un tableau en stockant la relation entre les utilisateurs et les éléments. Supposons que vous ayez la table users :

CREATE TABLE users (
    user_id SERIAL PRIMARY KEY,
    ...
);

Et vous avez une table définissant items :

CREATE TABLE items (
    item_id SERIAL PRIMARY KEY,
    ...
);

Vous pouvez relier les éléments qu'un utilisateur possède à l'aide d'un tableau similaire à user_items :

CREATE TABLE user_items (
    id SERIAL PRIMARY KEY,
    user_id BIGINT UNSIGNED NOT NULL,
    item_id BIGINT UNSIGNED NOT NULL,
    ...,
    FOREIGN KEY (user_id)
        REFERENCES users (user_id),
    FOREIGN KEY (item_id)
        REFERENCES items (item_id)
);

Ensuite, pour déterminer quels éléments l'utilisateur 123 a acquis, vous pouvez utiliser JOIN est similaire à :

SELECT items.*
FROM users
INNER JOIN user_items
    ON user_items.user_id = users.user_id
INNER JOIN items
    ON items.item_id = user_items.item_id
WHERE users.user_id = 123; -- Or some other condition.