sql >> Databáze >  >> RDS >> Mysql

Uložení více e-mailových adres v databázi pro různé typy uživatelů

Buď máte e-mailovou tabulku, která má cizí klíč, kterým je buď system_id, account_id, nebo customer_id. Pak můžete mít pole určující typ tohoto cizího klíče. Další komplikovanější strategií by bylo mít stále e-mailovou tabulku, ale žádný cizí klíč. Další tabulka, kterou byste nazvali email_relation, sestávající z email_id a cizího klíče. Tímto způsobem můžete použít jednu e-mailovou adresu pro všechny tři tabulky.

Příklad použití dvou tabulek

system
--------
s1 
s2
s3

account
--------
a1
a2
a3

customer
--------
c1
c2
c3

email
------
e1 [email protected]
e2 [email protected]
e3 [email protected]
e4 [email protected]

email_relation
---------------
email_id     foreign_id      relation_type
e1           s1              system
e1           a1              account
e1           c1              customer
e2           c1              customer
e3           c2              customer
e4           a3              account
e4           c3              customer

chcete-li tabulku zákazníků včetně e-mailové adresy

select c.customer_id, e.email
from customer c
left join email_relation r on (r.foreign_id = c.customer_id and relation_type = 'customer')
left join email          e on (e.email_id    = r.email_id)
where r.email_id is not null

Pokud chcete všechny e-maily do systému, můžete také

select e.email
  from email e
  join email_relation r on (r.email_id = e.email_id and relation_type = "system")
 where r.foreign_id = 1 


  1. php a html formulář na stejné stránce

  2. návrh tabulky + SQL otázka

  3. Instalační program MySql Workbench vyžaduje instalaci balíčku Visual C++ 2015 Redistributable Package, ale ten je již nainstalován

  4. zadaný argument není platným zdrojem výsledků MySQL