Benzersiz tuşları ve Update / Select ile birçok Birçok MySQL, aksi takdirde Ekle Var

1 Cevap php

Ben oluşturmak için başka bir köprü gelmiş benim MySQL veritabanında bir çok-çok ilişki var benim gol.

Current Tables:
Users (id, name)
Tags (id, name)
User_Tags (user_id, tag_id)

Here is the goal:
I would like to have the ability to take a tag i.e: #fb and insert it into my Tags database which has a unique constraint on name and if the tag exists I would like to return it's id

Ben tag.id eklemek ister ve geçerli kullanıcının user.id içine ederim User_Tags. Ben kullanıcının en sık kullanılan etiketler izlemek ve kullanım sıklığına göre sıralı bir liste halinde sunmak mümkün olmak istiyorum, çünkü ben User_Tags tablo üzerinde herhangi benzersiz kısıtlamaları yoktur.

I am currently developing this project in PHP using prepared statements.
Additionally, performance is not currently an issue as my user count is still fairly small, but it is steadily growing and may be an issue in the future.

1 Cevap

MySQL en ON DUPLICATE KEY UPDATE kullanabilir ve LAST_INSERT_ID(expr) olursa sokulduktan ya da zaten orada, örneğin olmuştur olmadığını etiket kimliği almak için

INSERT INTO
  Tags
  (name) 
VALUES
  (:name)
ON DUPLICATE KEY UPDATE
  id = LAST_INSERT_ID(id)

ve

INSERT INTO
  User_Tags
  (user_id, tag_id)
VALUES
  (:userid, LAST_INSERT_ID())