【问题标题】:Connectng Users Table to two different Databases for two different Website [duplicate]将用户表连接到两个不同网站的两个不同数据库[重复]
【发布时间】:2018-11-04 23:47:06
【问题描述】:

我有两张桌子

**DB1**
users
prices
. . . 

**DB2**
users
prices
. . .

两者都用于不同的网站,我想要做的是使两个users 表成为一个表,并且在两个网站之一中注册的任何用户也都在另一个网站上登录,

我想到的是制作一个DB3users 表,然后将它与DB1DB2 链接,但我真的不知道该怎么做,也不知道这是不是唯一的方法一个用户表同时用于两个不同的网站。

例如,如果有三个表查询需要像这样与第三个表连接,我也会使用

SELECT * FROM users[db3] INNER JOIN prices[db2] WHERE price > 0

如果我正在查询db2 网站,或者

SELECT * FROM users[db3] INNER JOIN prices[db1] WHERE price > 0

如果它在db1 网站上,我该怎么做?

【问题讨论】:

  • 两个数据库是运行在同一个 MySQL 服务器上、不同的 MySQL 服务器在同一个网络上、不同的网络在同一个数据中心还是不同的数据中心?
  • @TheImpaler 两个数据库都在同一台服务器上运行,另外我想知道它们是否都在不同的服务器上,我应该如何与之交互?使用 API?
  • 语法是db1.users
  • @NevilleKuyt 这不是联合,应该是联合。

标签: mysql sql pdo


【解决方案1】:

我会在一个数据库上保留一个 users 表,比如说在 DB1 上。

从数据库 DB2,我会使用:

SELECT * FROM DB1.users INNER JOIN prices WHERE price > 0;

看到DB1. 的前缀了吗?这样您就可以从不同的数据库访问表。

您需要确保将 DB1 上的权限(SELECT、UPDATE、DELETE、INSERT)授予 DB2 上的用户。

我强烈反对保留同一张表的多个副本。它们很快就会很容易不同步,你肯定会开始遇到各种问题。

【讨论】:

  • 我明白了,我一直认为dot . 部分总是用于别名,如果两个数据库在两个不同的服务器中,我是否使用 API?
  • 点用于分隔数据库、表和列名。
  • 是的,一些数据库使用点来表示更多的东西。例如,您可以使用 select * from CATALOG.SCHEMA.TABLE。如果你有一个“联合”数据库,你甚至可以在那里添加一个额外的前缀:SERVICE.CATALOG.SCHEMA.TABLE。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-11
  • 1970-01-01
  • 2023-02-11
  • 1970-01-01
  • 2018-04-27
  • 2014-05-14
  • 2014-10-05
相关资源
最近更新 更多