요리 책을 만들고 있는데 복제에 문제가 있습니다. 이 예제를 통해 쉽게 이해할 수, 그래서 시작하게됩니다 :MySQL 그룹이 다른 데이터를 잃지 않고 ID를 중복합니다.
내 테이블은 다음과 같이 :
SELECT r.name AS 'Recipe',
r.instructions,
ri.amount AS 'Amount',
mu.name AS 'Unit of Measure',
i.name AS 'Ingredient'
FROM Recipe r
JOIN RecipeIngredient ri on r.id = ri.recipe_id
JOIN Ingredient i on i.id = ri.ingredient_id
LEFT OUTER JOIN Measure mu on mu.id = measure_id;
I :
create table Recipe (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(25),
description VARCHAR(50),
instructions VARCHAR(500))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
create table Ingredient (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
create table Measure (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(30))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
create table RecipeIngredient (
recipe_id INT NOT NULL,
ingredient_id INT NOT NULL,
measure_id INT,
amount INT,
CONSTRAINT fk_recipe FOREIGN KEY(recipe_id) REFERENCES Recipe(id),
CONSTRAINT fk_ingredient FOREIGN KEY(ingredient_id) REFERENCES Ingredient(id),
CONSTRAINT fk_measure FOREIGN KEY(measure_id) REFERENCES Measure(id))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
및 I는 다음과 같다 쿼리를 실행할 때 이 결과는 '점점 M :
문제가 있다는 것이다를 C hocolate Cake는 하나 이상의 성분을 가진 동일한 제조법 임에도 불구하고 복제합니다. 이 문제를 해결할 수 있도록 도와 주시겠습니까? 그렇다면 레서피의 인스턴스를 하나 얻으시겠습니까?
충분한 정보를 제공하지 않았습니다. 원하는대로 레시피 당 한 줄만 얻는다 고 가정하면 어떻게 표시 할 것입니까? 에서와 같이 측정 단위, 성분 및 수량 열은 어떻게됩니까? –
혼란을 드려 죄송합니다. 내가 얻고 자하는 것은 모든 재료를 가진 조리법의 한 예입니다. 그게 가능한가? – Deividas
예, GROUP BY 절과 CONCAT 함수를 살펴 보겠습니다. –