열에 여러 값이있는 쿼리
PHP열에 여러 값이있는 쿼리
나는 다음과 같은 테이블을 가지고있다.
id name children
1 Roberto Michael,Dia
2 Maria John,Alex
3 Mary Alexandre,Diana
내 문제는; 알렉스라는 아이를 가진 사람을 찾고 싶습니다.
같은 셀에 하나 이상의 이름이 있기 때문에 "children = 'Alex' '는 SQL에서 사용할 수 없습니다.
그래서 저는 아이들이 '% Alex %'처럼 좋아하는 것을 사용합니다. 같은 시간에 나는 Alex처럼 시작한다. (Alexandre 또는 나는 dia를 얻고 싶다 그러나 결과는 dia와 다이아나이다 : (
해당 데이터 유형으로 Alex를 어떻게 만날 수 있습니까?
내 끔찍한 영어로 내 문제를 설명 할 수 있기를 바랍니다. D
해결법
-
==============================
1.가장 좋은 해결책은 스키마를 표준화하는 것입니다. 쉼표로 분리 된 목록 대신 각 행에 하나의 행이있는 별도의 표가 있어야합니다. 그런 다음이 테이블에 가입하여 특정 자녀를 둔 부모를 찾을 수 있습니다. 이에 대한 예제는 @ themite의 대답을 참조하십시오.
가장 좋은 해결책은 스키마를 표준화하는 것입니다. 쉼표로 분리 된 목록 대신 각 행에 하나의 행이있는 별도의 표가 있어야합니다. 그런 다음이 테이블에 가입하여 특정 자녀를 둔 부모를 찾을 수 있습니다. 이에 대한 예제는 @ themite의 대답을 참조하십시오.
하지만 어떤 이유로 든 할 수 없다면 FIND_IN_SET을 사용할 수 있습니다 :
WHERE FIND_IN_SET('Alex', children)
-
==============================
2.데이터를 두 개의 테이블로 분할해야합니다.
데이터를 두 개의 테이블로 분할해야합니다.
첫 번째는 이렇게 보일 것입니다.
ID Name 1 Roberto 2 Maria 3 Mary
그리고 두 번째는 이렇게
ParentId child 1 Michael 1 Dia 2 John 2 Alex
등등.
그런 다음 걱정할 필요없이 원하는 쿼리를 수행 할 수 있고 데이터가 훨씬 유용합니다.
-
==============================
3.그래서 여기에 두 개의 테이블을 갖고 싶습니다.
그래서 여기에 두 개의 테이블을 갖고 싶습니다.
parents: id name 1 Roberto 2 Maria 3 Mary children: id parentid name 1 1 Michael 2 1 Dia 3 2 John 4 2 Alex 5 3 Alexandre 6 3 Diana
이제는 조인 또는 존재를 통해 훨씬 더 효과적으로 쿼리 할 수 있습니다.
SELECT * FROM Parents WHERE EXISTS( SELECT * FROM Children WHERE parentid=Parents.id AND Children.name='Alex' )
-
==============================
4.나는 오히려 이런 식으로 아이들과 부모를 위해 다른 테이블을 만들 것입니다.
나는 오히려 이런 식으로 아이들과 부모를 위해 다른 테이블을 만들 것입니다.
부모 용 테이블
parent_id name 1 Roberto 2 Maria 3 Mary
어린 이용 테이블
children_id parent_id name 1 1 Michael 2 1 Dia 3 2 John
.... 등등
from https://stackoverflow.com/questions/28639692/query-with-multiple-values-in-a-column by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP 스크립트를 프로파일 링하는 가장 간단한 방법 (0) | 2018.09.07 |
---|---|
PHP 세션 고정 / 하이재킹 (0) | 2018.09.07 |
페이 스북 그래프 API가 2.2에서 2.3으로 작동하지 않습니다. (0) | 2018.09.07 |
PHP에서 이미지 크기 조절 (0) | 2018.09.07 |
다른 배열을 기반으로 키를 기준으로 배열을 정렬 하시겠습니까? (0) | 2018.09.07 |