좋아, 지금은 다른 쿼리에서 while 루프 내부에 쿼리가 있지만 ... 내가하려는 일을하는보다 효율적인 방법이 있어야합니다. 하나의 쿼리를 통해 아래 스크립트를 수행 할 수 있습니까? 그리고 그것은 더 효율적일까요? 여기에 내가 지금 가지고있는 무엇 (안 실제 코드,하지만 좋은 예)를 (내가 그것을 것 있으리라 믿고있어) : 다음과 같이 PHP - 하위 쿼리를 join으로 대체 하시겠습니까?
$sth = $dbh->prepare("SELECT * FROM Bugs LIMIT 5");
$sth->setFetchMode(PDO::FETCH_OBJ);
$sth->execute();
while($row = $sth->fetch()){
$bugId = $row->id;
echo 'Bug Name: ' . $row->name;
echo '<br />';
echo 'Affected Web Browsers: ';
$sth2 = $dbh->prepare("SELECT * FROM AffectedBrowsers WHERE BugId = '$bugId'");
$sth2->setFetchMode(PDO::FETCH_OBJ);
$sth2->execute();
$i = 1;
while($row2 = $sth2->fetch()){
if($i = 1){
echo $row2->browser;
}else{
echo ', ' . $row2->browser;
}
$i++;
}
}
내 테이블
있습니다 1) "버그"-이 테이블 하나를 가지고 나열된 각 버그에 대한 행. 2) "AFfectedBrowsers"-이 테이블에는 영향을받는 모든 브라우저에 대해 특정 버그가 있습니다. 이 테이블은 "AffectedBrowsers"테이블의 bugId 열을 통해 "Bugs"테이블과 관계가 있습니다.참고 : $ i를 증가시키는 것이 if/else 대신 for 루프에서 수행 될 수 있다는 것을 알고 있습니다.
업데이트 : 버그 당 하나의 행이 필요하며 해당 버그에 대해 영향을받는 모든 브라우저가 포함 된 결과 집합에 열을 추가한다고 추측합니다.
'LIMIT 5'가 필요합니까? 또는 "버그 수"에 관계없이 총 "영향을받는 브라우저"의 수를 제한하는 것이 좋습니까? –
한계 5는 이것이 구현되고있는 특정 페이지에 5 개의 버그 만 표시하기를 원하기 때문입니다. 하지만 영향을받는 브라우저의 총 수를 제한 할 수는 없습니다. 버그가 영향을 미치는 모든 브라우저가 필요하기 때문입니다. – ryanpitts1
David Hirst의 답을 참조하십시오. 'LIMIT 5'는 버그가 아니라 전체 결과를 제한합니다. 그 대신 버그를 제한해야한다면이 일이 복잡해집니다. –