简短摘要。我有2个数据库(Invoices.gdb和Users.gdb) 我想得到一张桌子,我可以看到哪个发票链接到哪个客户 对于您的信息:我知道PHP代码将我的值放入表中。我正在努力让我的LINK正好在2个数据库和我如何执行这个查询之间。
我的PDO课程(目前仅包含1个连接)
class DatabasePDO{
/** @var PDO */
private static $dbh;
static function getInstance(){
$str_conn="firebird:host=localhost;dbname=C:/Users/Desktop/USERS.GDB;charset=UTF8";
try{
self::$dbh = new PDO($str_conn, "username", "password");
}
catch(PDOException $e){
echo "Error!: ".$e->getMessage();
die();
}
return self::$dbh;
}
这只是为了让我的用户(并且它有效)。如何添加我的发票数据库?
这是我的班级
public static function getInvoices() {
$conn = DatabasePDO::getInstance();
$sql = "select * from users.customers as A , invoices.invoice as B
where a.customers.customerid = b.invoice.customerid";
$st = $conn->prepare($sql);
$st->execute();
$list = array();
while ( $row = $st->fetch() ) {
$invoice= new invoice( $row );
$list[] = $invoice;
}
$conn = null;
return $list;
}
我想要的查询如下:
select * from users.customers as A , invoices.invoice as B
where a.customers.customerid = b.invoice.customerid
我无法将2个数据库合并在一起。所以这不是解决方案。 提前谢谢!
答案 0 :(得分:2)
Firebird数据库是隔离的,您无法在数据库之间加入。最好的解决方案是将两个数据库合并为一个(这也有额外的好处,就像外键约束等完整性检查一样)。
第二个最好的方法是在发票数据库中用户数据库(或至少是必需的表格)复制。然后,您需要将用户中的更改同步到发票(例如,使用触发器和EXECUTE STATEMENT ON EXTERNAL
,或者安排到作业进行同步)。
否则,您必须手动加入代码,这远非最佳。