나는 하나의 SELECTs의 무리를 통합하려고합니다.뭔가를 선택하십시오 여러 테이블의 열 IN 뭔가를 조인
나는 다음과 유사하게 여러 테이블이 있습니다
테이블 : A1
+---+----+----+----+----+
|id | I1 | I2 | I3 | I4 |
+---+----+----+----+----+
| 1 | 5 | 6 | 1 | 3 |
+---+----+----+----+----+
테이블 : A2
+---+----+----+----+
|id | I1 | I2 | I3 |
+---+----+----+----+
| 1 | 3 | 10 | 5 |
+---+----+----+----+
그리고 다음과 같습니다 1 표 :
테이블 : 표준
+---+---------+
|id | Name |
+---+---------+
| 1 | 'one' |
| 2 | 'two' |
| 3 | 'three' |
| 4 | 'four' |
| 5 | 'five' |
| 6 | 'six' |
| 7 | 'seven' |
| 8 | 'eight' |
| 9 | 'nine' |
|10 | 'ten' |
+---+---------+
PHP 코드
<?php
while(/*"A" tables*/){
$noi = // number of columns in this A table
$id = // id of this A table
$columns = "";
for ($i=1; $i<=$noi; $i++){
$columns = $columns . "A" . $id . ".I" . $i . ", ";
}
$columns = rtrim($columns, ", ");
$sql = "SELECT s.* FROM A" . $id . "
INNER JOIN Standards AS s
ON s.id IN (" . $columns . ")
WHERE A" . $id . ".id=1
ORDER BY s.id ASC";
$result = mysql_query($sql);
}
?>
나는 내가 루프에 대한 모든를 생성하기 위해 실행할 수 있습니다 생각 1에이 SELECTS을 모두 결합하고 싶습니다 테이블의 이름은 있지만, 다른 JOIN ON ... IN (...)과 조인하는 방법을 정확하게 알지 못했습니다. 내가 생성 할
결과는 다음과 같습니다
+---+---------+
|id | Name |
+---+---------+
| 1 | 'one' |
| 3 | 'three' |
| 5 | 'five' |
| 6 | 'six' |
|10 | 'ten' |
+---+---------+
테이블을 피벗 할 수 있으면 (예 : 열을 행으로 바꿀 수 있다면) 더 쉬울 것입니다. AFAIK MySQL에는이 기능이 없습니다. – NullUserException
그 문제는 A 테이블에서 ID # 1 뒤에 수백 개의 행이 있다는 것입니다. – abarrington
나는 호기심이 많다. 왜 테이블은 이렇게 구조화되어 있습니까? 이런 종류의 문제가 발생하면 나쁜 DB 설계의 징후가 될 수 있습니다. – NullUserException