sql >> Database teknologi >  >> RDS >> Mysql

Indhold-for-bruger:to tabeller med kolonner med samme navn eller join?

Et meget ofte brugt koncept i situationer som denne er ved at have en brugertabel og en posttabel, der forbinder dem med en unik identifikator. Denne identifikator kan være hvad som helst - et serialiseret id, et brugernavn, e-mailadresse osv. - så længe det er unikt. Linking udføres ved hjælp af en fremmednøgle-begrænsning. Præcis hvordan dette opnås i MySQL ved jeg ikke, men i Postgres gøres det sådan her:

CREATE TABLE users (
  id serial PRIMARY KEY,
  name text
);

CREATE TABLE posts (
  content text,
  user_id integer REFERENCES users(id) NOT NULL
);

Tabellerne flettes derefter ved hjælp af en joinforbindelse. Dette kan gøres på flere måder, men her er en krydssammenføjning efter indsættelse af nogle værdier at lege med:

@> 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 i MySQL, men jeg tror, ​​at ovenstående konstruktioner vil virke direkte.

(edit:Tilføjet INSERTs til afklaring)



  1. Pyodbc - Datakildenavn ikke fundet, og ingen standarddriver angivet

  2. Problemer med at binde et imploderet array til en mysql-forberedt erklæring

  3. Hent matrix af kolonneværdier i codeigniter

  4. Kan ikke indlæse QMYSQL-driver på PySide2