복붙노트

열에 여러 값이있는 쿼리

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. ==============================

    1.가장 좋은 해결책은 스키마를 표준화하는 것입니다. 쉼표로 분리 된 목록 대신 각 행에 하나의 행이있는 별도의 표가 있어야합니다. 그런 다음이 테이블에 가입하여 특정 자녀를 둔 부모를 찾을 수 있습니다. 이에 대한 예제는 @ themite의 대답을 참조하십시오.

    가장 좋은 해결책은 스키마를 표준화하는 것입니다. 쉼표로 분리 된 목록 대신 각 행에 하나의 행이있는 별도의 표가 있어야합니다. 그런 다음이 테이블에 가입하여 특정 자녀를 둔 부모를 찾을 수 있습니다. 이에 대한 예제는 @ themite의 대답을 참조하십시오.

    하지만 어떤 이유로 든 할 수 없다면 FIND_IN_SET을 사용할 수 있습니다 :

    WHERE FIND_IN_SET('Alex', children)
    
  2. ==============================

    2.데이터를 두 개의 테이블로 분할해야합니다.

    데이터를 두 개의 테이블로 분할해야합니다.

    첫 번째는 이렇게 보일 것입니다.

    ID    Name
    1     Roberto
    2     Maria
    3     Mary
    

    그리고 두 번째는 이렇게

    ParentId     child
    1            Michael
    1            Dia
    2            John
    2            Alex
    

    등등.

    그런 다음 걱정할 필요없이 원하는 쿼리를 수행 할 수 있고 데이터가 훨씬 유용합니다.

  3. ==============================

    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. ==============================

    4.나는 오히려 이런 식으로 아이들과 부모를 위해 다른 테이블을 만들 것입니다.

    나는 오히려 이런 식으로 아이들과 부모를 위해 다른 테이블을 만들 것입니다.

    부모 용 테이블

    parent_id     name            
    1             Roberto         
    2             Maria           
    3             Mary     
    

    어린 이용 테이블

    children_id  parent_id  name
    1            1          Michael     
    2            1          Dia 
    3            2          John
    

    .... 등등

  5. from https://stackoverflow.com/questions/28639692/query-with-multiple-values-in-a-column by cc-by-sa and MIT license