Un concetto molto utilizzato in situazioni come questa è avere una tabella utenti e una tabella post, collegandole insieme con un identificatore univoco. Questo identificatore può essere qualsiasi cosa, un ID serializzato, un nome utente, un indirizzo e-mail, ecc., purché sia univoco. Il collegamento viene eseguito utilizzando un vincolo di chiave esterna. Non so esattamente come questo si ottiene in MySQL, ma in Postgres è fatto in questo modo:
CREATE TABLE users (
id serial PRIMARY KEY,
name text
);
CREATE TABLE posts (
content text,
user_id integer REFERENCES users(id) NOT NULL
);
Le tabelle vengono quindi unite utilizzando un join. Questo può essere fatto in diversi modi, ma ecco un cross join dopo l'inserimento di alcuni valori con cui giocare:
@> INSERT INTO users (name) VALUES ('James');
@> INSERT INTO users (name) VALUES ('Jones');
@> INSERT INTO posts (content, user_id) VALUES ('Hello from James.', 1);
@> INSERT INTO posts (content, user_id) VALUES ('Greetings from Jones.', 2);
@> SELECT U.id AS user_id, U.name, P.content \
FROM users U, posts P \
WHERE U.id = P.user_id;
user_id | name | content
---------+-------+-----------------------
1 | James | Hello from James.
2 | Jones | Greetings from Jones.
YMMV in MySQL, ma penso che le costruzioni di cui sopra funzioneranno immediatamente.
(modifica:Aggiunti INSERT per chiarimenti)