2016-11-19 1 views
0

매우 간단하지만 어려움이 있습니다. '팀'이라고 불리는 열이있는 테이블이 있습니다. 행의 일부가 여러 팀으로 구성되어 있으며 한 사람이 쉼표로 구분되어 있으므로 team1, team2 일 수 있습니다. 다른 하나는 team2,team3,team4 일 수 있습니다.csv mysql이있는 열에서 데이터 선택

내가 원하는 것은 SELECT 쿼리를 수행하여 한 사람이 team1이고 다른 사람이 team1 인 경우 다른 사람이 해당 열에도 불구하고 둘 다 출력하도록합니다.

$sql = "SELECT * FROM respondant_data WHERE respondant_team = 'Central Team'"; 
$result = $conn->query($sql); 

if($result->num_rows > 0){ 
    while($row = $result->fetch_assoc()){ 
     echo $row["respondant_firstname"]; 
     echo $row["respondant_lastname"]; 
     echo $row["respondant_team"]; 
     echo '<br>';   
    } 
} else{ 
    echo 'no results'; 
} 

을 그리고 당신은 추측 할 수로서 '중앙 팀'모든 사용자도 자신의 칼럼에서 다른 팀을 가지고 있기 때문에 다시 나에게 아무 것도 반환하지 않습니다 : 여기에

내 쿼리의 근거 모습입니다.

** UPDATE ** 내 쿼리에 대한 업데이트를 만들었 그래서 아래의 제안에 따라

:

$sql = "SELECT * FROM respondant_data WHERE FIND_IN_SET('Central Team', respondant_team) > 0"; 

은 그래서 일부 데이터 전부는 아니지만을 반환 않으므로 함께 사람들을 반환하는 것 열의 단일 값.

+2

정말 테이블 디자인을 변경해야합니다. 정규화되지 않았습니다. 하나의 열에 여러 개의 값을 저장하지 마십시오 !! –

+0

내가 가진 문제는 클라이언트가 CSV를 통해 데이터를로드했는데 데이터 형식을 변경하려고하지 않아서 심각하게 제한되었습니다. – PhpDude

+0

그런 다음'find_in_set()'을 살펴보십시오 –

답변

0
This solution provides you an case-insensitiv text search and prints every Member who is in team 1: 



$YOURNEEDLE = 'team 1'; 
       $sql = "SELECT * FROM respondant_data WHERE respondant_team = 'Central Team'"; 
       $result = $conn->query($sql); 
       if($result->num_rows > 0){ 
        while($row = $result->fetch_assoc()){ 
         if(stristr($row["respondant_team"],$YOURNEEDLE)) { 
          echo $row["respondant_firstname"]; 
          echo $row["respondant_lastname"]; 
          echo $row["respondant_team"]; 
          echo '<br>'; 
         } 
        } 
       } else{ 
        echo 'no results'; 
       } 

이 질문을 해결하기 위해 많은 waysd을이 있으며, 또 다른에 :

  $needle = 'team 1'; 
      $sql = "SELECT * FROM respondant_data WHERE respondant_team = 'Central Team'"; 
      $result = $conn->query($sql); 
      if($result->num_rows > 0){ 
       while($row = $result->fetch_assoc()){ 
       $arrayTeams =  explode(', ',$row["respondant_team"]); 
        if(in_array($needle, $arrayTeams)) { 
         echo $row["respondant_firstname"]; 
         echo $row["respondant_lastname"]; 
         echo $row["respondant_team"]; 
         echo '<br>'; 
        } 
       } 
      } else{ 
       echo 'no results'; 
      } 
+0

내가 왜 투표를 했습니까? 오류가 무엇인지 말해주십시오. 그렇지 않으면 내가 couldnt 당신을 도와 줘? –

-1

하지 않는 것이 좋습니다하지만

SELECT * FROM respondant_data WHERE respondant_team RLIKE 'Central Team(?:,|$)' 

그래서이

$sql = 'SELECT * FROM respondant_data WHERE respondant_team RLIKE \''.$yourteamname.'(?:,|$)\''; 
으로 PHP에서 쿼리를 작성 작업을해야