我有没有约束定义的MySQL数据库,我在PHP中也有一个多维数组,其中包含有关此数据库中表关系的信息。数组采用这种格式(仅作为示例):
array(20){
ps_attribute_lang => array(2) {
id_attribute => array(2) {
totable => "ps_attribute" (12)
tocolumn => "id_attribute" (12)
}
id_lang => array(2) {
totable => "ps_lang" (7)
tocolumn => "id_lang" (7)
}
}
ps_cart => array(4) {
id_lang => array(2) {
totable => "ps_lang" (7)
tocolumn => "id_lang" (7)
}
id_address_delivery => array(2) {
totable => "ps_address" (10)
tocolumn => "id_address" (10)
}
id_address_invoice => array(2) {
totable => "ps_address" (10)
tocolumn => "id_address" (10)
}
id_customer => array(2) {
totable => "ps_customer" (11)
tocolumn => "id_customer" (11)
}
}
ps_cart_product => array(1) {
id_product => array(2) {
totable => "ps_product" (10)
tocolumn => "id_product" (10)
}
}
...
}
现在我想知道如何在这个数据库中找到从一个表到另一个表的路径。
让我举个例子。假设我们的数据库中有以下表格:
现在让我们说每次我想找到一些属性的房子(例如居住在芝加哥的每个蓝屋)。为此,我需要生成SQL命令。
SQL的SELECT部分很简单(例如SELECT houses.id
)。 SQL的一部分也非常简单(例如WHERE cities.name = 'Chicago' AND house.color = 'blue'
)。 问题在于“连接”SQL的JOIN部分中的表。
我只需要搜索这个多维关系数组,找到一个连接包含SQL的SQL和SELECT部分的WHERE部分条件的所有表的路径。
在这种情况下,我希望得到这个:
SELECT house.id
FROM house
JOIN street ON(house.id_street = street.id)
JOIN city ON(street.id_city = city.id)
WHERE house.color = 'blue' AND city.name = 'chicago'
您是否知道任何能够从此结构中获取此类信息的算法?
提前谢谢!