여러 테이블에서 여러 행을 검색하려고하는데 올바른 방법으로 수행하지 않을 것이라고 생각합니다. 프로젝트는 온라인 쇼핑몰입니다. 주문, 주문 정보 및 서비스는 모두 ID와 연결되어 있습니다.여러 테이블에서 여러 행 검색
주문 ID와 서비스 ID가 주문 정보 테이블에 있습니다. 서비스 ID에 링크 된 바구니의 각 항목에 대한 행은 어떤 서비스인지 확인하고 주문 ID는 어떤 주문인지 확인합니다. 예 : 아마 서비스 가격은 고객의 주문이 후에 변경할 수 있기 때문에
services table
-
service_id|name |price
------------------------
2 |Tech |100
------------------------
4 |Support|150
------------------------
10 |Mainten|50
------------------------
orders table
-
order_id|customer_id|name|lastname
----------------------------------
10 |16 |John|Smith
----------------------------------
orderdetails table
-
orderdetails_id|order_id|service_id|price|quantity
--------------------------------------------------
1 |10 |2 |100 |4
--------------------------------------------------
2 |10 |4 |150 |2
--------------------------------------------------
3 |10 |10 |50 |1
--------------------------------------------------
나는 OrderDetails의 테이블에 서비스의 가격을 삽입합니다. 이 순간
나는이 쿼리가 :
$query = $this->db->prepare(
'SELECT orders.*, orderdetails.*, services.*
FROM orders
LEFT JOIN orderdetails
ON orderdetails.order_id = orders.order_id
LEFT JOIN services
ON orderdetails.service_id = services.service_id
WHERE orders.order_id = ?
AND orders.customer_id = ?');
을 그리고이 결과를 가지고 :
stdClass Object
(
[order_id] => 10
[customer_id] => 16
[name] => Tech
[lastname] => Smith
[orderdetails_id] => 1
[service_id] => 2
[price] => 100
[quantity] => 4
)
stdClass Object
(
[order_id] => 10
[customer_id] => 16
[name] => Support
[lastname] => Smith
[orderdetails_id] => 2
[service_id] => 4
[price] => 150
[quantity] => 2
)
stdClass Object
(
[order_id] => 10
[customer_id] => 16
[name] => Mainten
[lastname] => Smith
[orderdetails_id] => 3
[service_id] => 10
[price] => 50
[quantity] => 1
)
나는 두 가지 문제가있다. 첫 번째 문제는 주문 테이블과 서비스 테이블에 동일한 열 이름이 있다는 것입니다. 제 2 회는 (내가 아니라 쿼리하고 있지 않다 알고 있기 때문에) 쿼리가 모든 정보를 반환하지만, 나는이 같은 받으실 :
내 말은stdClass Object
(
[order_id] => 10
[customer_id] => 16
[name] => John
[lastname] => Smith
[orderdetails_id] => 1
[service_id] => 10
[price] => 50
[quantity] => 1
[service_name] => Mainten
[orderdetails_id2] => 2
[service_id2] => 4
[price2] => 150
[quantity2] => 2
[service_name2] => Support
[orderdetails_id3] => 3
[service_id3] => 2
[price3] => 100
[quantity3] => 4
[service_name3] => Tech
)
, 내가 SQL 쿼리의 전문가가 아니다, 난을 많은 것을 읽었지 만 여러분이 처리 할 주문을받을 고객 서비스 직원과 주문을받을 지역의 테이블을 연결할 다른 두 개의 테이블이 있기 때문에 여러분이 저를 이해하도록 도와 줄 수 있다고 생각합니다.
나는 개체를 가져 오기위한 코드를 사용
$array = array();
while($loop = $result->fetch_object()){ $array[] = $loop; }
return $array;
쿼리가 원하는 결과를 더 많이 또는 적게 반환해야하므로 SQL에서는 문제가되지 않지만 PHP에서는 문제가되지 않습니다. 쿼리 결과에서 어떻게 그 객체를 얻습니까? 사용하는 코드가 중복 된 열 이름을 버리거나 병합하는 것 같습니다. –
나는 이것을 사용한다 :'$ array = array(); \t \t \t 동안 ($ 루프 = $에서 그 결과> fetch_object()) { \t \t \t \t $ 배열 [] = $ 루프; \t \t \t} \t \t \t 반환 $ 배열, 나는 전적으로 당신의 대답에 동의' – kh0d3x