여러 테이블에서 *를 선택합니다.MySQL
SELECT name, price, photo FROM drinks, drinks_photos WHERE drinks.id = drinks_id
5행(5어레이),photo는 일련의 유일한 고유 필드입니다. name, price반복되다 fanta- name, price 를 3회 반복합니다).이 복제품들은 어떻게 없애죠?
편집: 갖고 싶다name, price그리고 모든 것photo음료수마다.
id name price
1. fanta 5
2. dew 4
id photo drinks_id
1. ./images/fanta-1.jpg 1
2. ./images/fanta-2.jpg 1
3. ./images/fanta-3.jpg 1
4. ./images/dew-1.jpg 2
5. ./images/dew-2.jpg 2
여기서 수행하는 작업은 (여러 테이블에서 선택하기 때문에 암묵적으로 수행하는 작업이지만)라고 불립니다.즉, WHERE 절에 조건을 추가하지 않은 경우 이러한 표의 모든 조합을 사용할 수 있습니다.가입은 조건이 있는 경우에만 드링크 ID가 일치하는 행으로 제한됩니다.
그러나 이 특정 drinks_id가 포함된 X개의 사진이 있는 경우 모든 음료에 대해 X개의 다중 행이 여전히 결과에 있습니다.설명서에 따라 원하는 사진이 제한되지 않습니다!
음료당 행이 1개뿐인 경우 특정 drinks_id를 가진 행이 여러 개 있는 경우 SQL에 수행할 작업을 지정해야 합니다.이를 위해서는 그룹화와 집계 기능이 필요합니다.그룹화할 엔트리(예를 들어 모든 동등한 drinks_ids)를 SQL에 지시합니다.SELECT에서는 그룹화된 각 결과 행에 대해 어떤 엔트리를 사용해야 하는지 지시해야 합니다.숫자의 경우, 이것은 평균, 최소, 최대(일부 예로 들 수 있습니다.
당신의 경우, 한 줄만 원하는 경우 음료수 사진을 조회할 수 없습니다.각 음료의 결과에는 여러 장의 사진이 포함될 수 있다고 생각하겠지만 SQL에서는 이 작업을 수행할 수 없습니다.원하는 사진만 있고 어떤 사진이든 상관 없는 경우 drinks_id로 그룹화하면 됩니다(드링크당 한 줄만 얻을 수 있습니다).
SELECT name, price, photo
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
GROUP BY drinks_id
name price photo
fanta 5 ./images/fanta-1.jpg
dew 4 ./images/dew-1.jpg
MySQL에는 GROUP_CONCAT도 있습니다.파일명을1개의 문자열로 연결하려면 , 다음의 순서를 실행합니다.
SELECT name, price, GROUP_CONCAT(photo, ',')
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
GROUP BY drinks_id
name price photo
fanta 5 ./images/fanta-1.jpg,./images/fanta-2.jpg,./images/fanta-3.jpg
dew 4 ./images/dew-1.jpg,./images/dew-2.jpg
하지만, 만약 당신이 그것을 가지고 있다면, 이것은 위험해질 수 있습니다.,클라이언트측에서 이 값을 다시 분할할 가능성이 높기 때문에 필드 값 내에 있습니다.또한 표준 SQL Aggregate 함수도 아닙니다.
이름과 가격에 대한 중복된 값이 여기에 있습니다.drinks_photos 테이블에는 ID가 중복되어 있습니다.당신은 그들을 피할 방법이 없어요.또한 정확히 무엇을 원하는가?
중복을 제거하기 위해 다음을 기준으로 그룹화할 수 있습니다.drinks.id 하면 한 한 안 drinks.id(데이터베이스의 사내 실장에 의해서, 취득하는 사진이 다릅니다).
있지 않지만 MySQL의 가장 낮은 MySQL의 수 id(이렇게 하다)
SELECT name, price, photo
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
GROUP BY drinks.id
언급URL : https://stackoverflow.com/questions/12890071/select-from-multiple-tables-mysql
'source' 카테고리의 다른 글
| MySQL과SQL Server와오라클 (0) | 2022.09.18 |
|---|---|
| 루트 권한을 가진 /docker-entrypoint-initdb.d의 스크립트 실행 (0) | 2022.09.18 |
| Java, ArrayList에서 Integer 항목을 삭제하는 방법 (0) | 2022.09.18 |
| PHP: 문자열을 배열로 분할합니다(예: 구분 기호 없이 분해). (0) | 2022.09.18 |
| 브라우저 창/탭이 닫혔을 때 localStorage 항목을 삭제하는 방법 (0) | 2022.09.12 |