2015-01-03 2 views
0

나는 두 개의 테이블, UsersProducts을 가지고있다. 사용자에게 몇 가지 제품이있을 수 있습니다. 모든 제품을 선택하고 속한 사용자를 표시해야합니다.mysql은 하나의 관계에서 많은 관계를 선택한다

mysql 조인을 사용하여 문제를 해결하는 방법.

SELECT users.login FROM users LEFT JOIN products ON users.id=products.user_id; 

을하지만,이 경우에는 나에게 유일한 사용자 로그인을 보여줍니다,하지만 난뿐만 아니라 제품 이름, 가격과 설명을 얻을 필요가 :

CREATE TABLE `users` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `login` varchar(16) NOT NULL, 
    `password` varchar(255) NOT NULL, 
    `email` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 

CREATE TABLE `products` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `user_id` int(11) NOT NULL, 
    `name` varchar(255) NOT NULL, 
    `description` varchar(255) NOT NULL, 
    `price` decimal(10,2) NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `user_id` (`user_id`), 
    CONSTRAINT `user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION 
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 

나는이 같은 시도했습니다.

답변

1
SELECT p.name, p.price, p.description, group_concat(u.login) as users 
FROM products p 
LEFT JOIN users u ON u.id = p.user_id 
GROUP BY p.name, p.price, p.description 
+0

감사하지만이 쿼리는 'products'의 열만 반환하고 'users'테이블의 로그인은 반환하지 않습니다. – lalexa

관련 문제