2017-03-17 67 views
1

所以我有一个表与所有用户信息和另一个表与产品信息。一表多个字段到其他表

在每个产品上都有对多个用户的引用。 例如:user1是生产者,user2是productSupervisor,user3是productManager。

我怎样才能得到的信息是这样的: product1.producer是User1.Name,product1.supervisor是user2.Name和product.manager是user3.Name

生产,productSupervisor和productManager存储为用户ID。

创建报表

CREATE TABLE employee (
    idEmployee int(11) NOT NULL AUTO_INCREMENT, 
    networkID varchar(45) NOT NULL, 
    firstName varchar(100) NOT NULL, 
    lastName varchar(100) NOT NULL, 
    phoneExtension varchar(10) DEFAULT NULL, 
    email varchar(50) NOT NULL, 
    mobile varchar(20) DEFAULT NULL, 
    onCall tinyint(4) NOT NULL DEFAULT '0', 
    lastLogin varchar(100) DEFAULT 'Never', 
    active tinyint(4) NOT NULL DEFAULT '1', 
    createDate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (idEmployee), 
    KEY idx_employee (idTeam), 
    KEY idx_employee_0 (idPosition), 
    CONSTRAINT fk_employee_employeepositions FOREIGN KEY (idPosition) REFERENCES employeePositions (idPosition) ON DELETE NO ACTION ON UPDATE NO ACTION, 
    CONSTRAINT fk_employee_teams FOREIGN KEY (idTeam) REFERENCES teams (idTeam) ON UPDATE NO ACTION 
) 

CREATE TABLE product (
    idProduct int(11) NOT NULL, 
    idSupervisor int(11) NOT NULL DEFAULT '1', 
    idProducer int(11) NOT NULL DEFAULT '1', 
    idManager int(11) NOT NULL DEFAULT '1', 
    prodcutInfo longtext, 
    PRIMARY KEY idProduct 
) 
+0

'选择的product_id,user1.name,user2.name,用户3。名称 左加入用户在product.user1_id = users.user_id用户1 左加入用户在product.user2_id = users.user_id用户2 左加入用户在product.user3_id = users.user_id用户3 其中product_id =?' –

+0

或者 - 如@ryanVincent所说,如果我们知道查询实际应该是什么样子,它会容易得多:) –

+0

我还没有插入任何数据....我我仍然试图将我的头围绕在结构上......以了解是否需要改变结构。但我找不到一种方法让查询变得有意义。 – pmoreira

回答

1

你可以加入product表上employee表三次,一次为每个角色:

SELECT idProduct, 
     CONCAT_WS(' ', s.firstname, s.lastname) AS supervisor, 
     CONCAT_WS(' ', p.firstname, p.lastname) AS producer, 
     CONCAT_WS(' ', m.firstname, m.lastname) AS manager 
FROM product pr 
JOIN employee s ON pr.idSupervisor = s.idEmployee 
JOIN employee p ON pr.idSupervisor = p.idEmployee 
JOIN employee m ON pr.idSupervisor = m.idEmployee 
+1

就是这样...... !!我可以打电话给同一张桌子倍数...我现在要在黑暗的房间里关闭自己...... !!非常感谢您的帮助 – pmoreira

相关问题