Php 从数据库中的所有表中获取数据

Php 从数据库中的所有表中获取数据,php,mysql,Php,Mysql,好的,我的数据库中有5个表,它们如下 办公地点 州 城市 工作人员 标题 titles表仅与staff表关联,但其他表都是内部联接的。我尝试过各种mysql语句,但没有一种允许我引入标题。 以下是我尝试使用的sql语句的最新版本: SELECT officelocations_tbl.*,city_tbl.*, state_tbl.* , titles_tbl.*, contact1.firstName AS c1Firstname, contact1.lastName AS

好的,我的数据库中有5个表,它们如下 办公地点 州 城市 工作人员 标题

titles表仅与staff表关联,但其他表都是内部联接的。我尝试过各种mysql语句,但没有一种允许我引入标题。 以下是我尝试使用的sql语句的最新版本:

    SELECT officelocations_tbl.*,city_tbl.*, state_tbl.* , titles_tbl.*, 
    contact1.firstName AS c1Firstname, contact1.lastName AS c1lastName, 
    contact1.middleInitial AS c1middleInitial, contact1.suffix AS c1suffix, 
    contact1.accredations AS c1accredations, contact1.phone AS c1Phone, 
    contact1.faxNumber AS c1FaxNumber, contact1.mobilePhone AS c1Mobile, 
    contact1.email AS c1Email, contact1.titleID AS c1Title, 

    contact2.firstName AS c2Firstname, contact2.lastName AS c2lastName, 
    contact2.middleInitial AS c2middleInitial, contact2.suffix AS c2suffix, 
    contact2.accredations AS c2accredations,  contact2.phone AS c2Phone, 
    contact2.faxNumber AS c2FaxNumber, contact2.mobilePhone AS c2Mobile, 
    contact2.email AS c2Email, contact2.titleID AS c2Title, 

    partner.firstName AS c3Firstname, partner.lastName AS c3lastName, 
    partner.middleInitial AS c3middleInitial, partner.suffix AS c3suffix, 
    partner.accredations AS c3accredations, partner.phone AS c3Phone, 
    partner.faxNumber AS c3FaxNumber, partner.mobilePhone AS c3Mobile, 
    partner.email AS c3Email, partner.titleID AS c3Title 

    FROM officelocations_tbl 

    JOIN city_tbl ON (officelocations_tbl.cityID = city_tbl.cityID)  
    INNER JOIN titles_tbl ON titles_tbl.titleID = staff_tbl.titleID 
    LEFT OUTER JOIN state_tbl ON (officelocations_tbl.stateID = state_tbl.stateID) 
    LEFT OUTER JOIN staff_tbl contact1 ON (contact1.staffID = officelocations_tbl.contact1) 
    LEFT OUTER JOIN staff_tbl contact2 ON (contact2.staffID = officelocations_tbl.contact2) 
    LEFT OUTER JOIN staff_tbl partner ON (partner.staffID = officelocations_tbl.partner)
然而,这给了我一个错误[Err]1054-“on子句”中未知的列“staff_tbl.titleID”。如果我删除这两行:

    INNER JOIN titles_tbl ON titles_tbl.titleID = staff_tbl.titleID
    titles_tbl.*, 
它起作用了,但并没有吸引到标题。我也尝试过这样做,但它只会吸引一次标题,而不是所有三个联系人

    SELECT
    staff_tbl.staffID,
    staff_tbl.staffID_C2,
    staff_tbl.staffID_P,
    staff_tbl.firstName,
    staff_tbl.middleInitial,
    staff_tbl.lastName,
    staff_tbl.suffix,
    staff_tbl.accredations,
    staff_tbl.email,
    staff_tbl.phone,
    staff_tbl.mobilePhone,
    staff_tbl.officePhone,
    staff_tbl.faxNumber,
    staff_tbl.address1,
    staff_tbl.address2,
    staff_tbl.cityID,
    staff_tbl.stateID,
    staff_tbl.zipCode,
    staff_tbl.titleID,
    staff_tbl.locationID,
    staff_tbl.photoURL,
    staff_tbl.vCardURL,
    staff_tbl.qRCodeURL,
    staff_tbl.resumeURL,
    staff_tbl.biography,
    staff_tbl.dateCreated,
    officelocations_tbl.locationID,
    officelocations_tbl.officeName,
    officelocations_tbl.address1,
    officelocations_tbl.address2,
    officelocations_tbl.cityID,
    officelocations_tbl.stateID,
    officelocations_tbl.zipCode,
    officelocations_tbl.officePhone,
    officelocations_tbl.contact1,
    officelocations_tbl.contact2,
    officelocations_tbl.partner,
    city_tbl.cityID,
    city_tbl.cityName,
    state_tbl.stateID,
    state_tbl.state_abreviation,
    state_tbl.state_name,
    titles_tbl.titleID,
    titles_tbl.titleName, 

    contact1.firstName AS c1Firstname, contact1.lastName AS c1lastName, 
    contact1.middleInitial AS c1middleInitial, contact1.suffix AS c1suffix, 
    contact1.accredations AS c1accredations, contact1.phone AS c1Phone, 
    contact1.faxNumber AS c1FaxNumber, contact1.mobilePhone AS c1Mobile, 
    contact1.email AS c1Email, contact1.titleID AS c1Title, 

    contact2.firstName AS c2Firstname, contact2.lastName AS c2lastName, 
    contact2.middleInitial AS c2middleInitial, contact2.suffix AS c2suffix, 
    contact2.accredations AS c2accredations, contact2.phone AS c2Phone, 
    contact2.faxNumber AS c2FaxNumber, contact2.mobilePhone AS c2Mobile, 
    contact2.email AS c2Email, contact2.titleID AS c2Title, 

    partner.firstName AS c3Firstname, partner.lastName AS c3lastName, 
    partner.middleInitial AS c3middleInitial, partner.suffix AS c3suffix, 
    partner.accredations AS c3accredations, partner.phone AS c3Phone, 
    partner.faxNumber AS c3FaxNumber, partner.mobilePhone AS c3Mobile, 
    partner.email AS c3Email, partner.titleID AS c3Title 

    FROM officelocations_tbl
    INNER JOIN staff_tbl ON staff_tbl.staffID = officelocations_tbl.contact1
    INNER JOIN state_tbl ON state_tbl.stateID = officelocations_tbl.stateID
    INNER JOIN titles_tbl ON titles_tbl.titleID = staff_tbl.titleID
    INNER JOIN city_tbl ON city_tbl.cityID = officelocations_tbl.cityID

    LEFT OUTER JOIN staff_tbl contact1 ON (contact1.staffID = officelocations_tbl.contact1) 
    LEFT OUTER JOIN staff_tbl contact2 ON (contact2.staffID = officelocations_tbl.contact2) 
    LEFT OUTER JOIN staff_tbl partner ON (partner.staffID = officelocations_tbl.partner)

这仅适用于员工的第一个关联\u tbl.staffID=officelocations\u tbl.contact1。我不知道下一步该做什么。有没有人知道如何让它拉动所有5张桌子

您只需将内部连接向下移动,例如从

INNER JOIN titles_tbl ON titles_tbl.titleID = staff_tbl.titleID 
LEFT OUTER JOIN state_tbl ON (officelocations_tbl.stateID = state_tbl.stateID) 

当解析器到达内部连接时,staff_tbl还没有被连接,解析器将不会“向前看”以查看它是否稍后被连接。因此,它立即以“没有这样的表/字段”退出


切换发生此情况的顺序允许首先加入taff_表,然后可以在进一步的联接中使用它。

这可能是一个愚蠢的问题,但您确定staff_tbl包含列titleID吗?仍然会收到与之前相同的错误消息[Err]1054-在“on子句”中的未知列“staff_tbl.titleID”。如果我删除了这个内部连接,并选择了titles表中的所有信息,那么它会工作,但不会拉取标题,只有title id.Oops在这部分中应该有另一个左连接。一秒钟编辑答案。。。注意到你把员工的名字化名为各种不同的名字,从来没有留下一个真正的“员工”。不过,再加入一个没有别名的staff_tbl会有所帮助。我不确定我能不能做到。我试过一次,但问题是我在员工表中只有一个位置显示员工ID,在位置上有3个不同的位置显示联系人1、联系人2和合作伙伴。当我尝试将1个员工ID链接到位置tbl中的3个不同位置时,它会出错。
LEFT OUTER JOIN state_tbl ON (officelocations_tbl.stateID = state_tbl.stateID) 
INNER JOIN titles_tbl ON titles_tbl.titleID = staff_tbl.titleID