2015-04-14 3 views
0

У меня есть один основной запрос и на основе его результатов мне нужно создать еще 3, чтобы отобразить все необходимые мне данные. Однако этот цикл создает слишком много запросов к серверу. Я понимаю, что можно избежать этого при подключении SQL, но я не так, как это будет работать в моем случае.Как присоединиться к 3 различным типам запросов sql в 1

SELECT * FROM `newLoads` WHERE `id` like '%".$term."%' OR `loadNumber` like '%".$term."%' ORDER BY `puDate` DESC 
//this is my main query and for every result it produces i query the following in **while** loop: 


SELECT count(*) FROM `newStops` where idLoad = '".$load['id']."' 

SELECT newStops.idConsignee, consignees.name, consignees.address FROM `newStops` INNER JOIN `consignees` ON newStops.idConsignee = consignees.id WHERE idLoad = '".$load['id']."' ORDER by stopNumber ASC LIMIT 1 

//the last one is the same as the previous but it's ordered by stopNumber DESC 
SELECT newStops.idConsignee, consignees.name, consignees.address FROM `newStops` INNER JOIN `consignees` ON newStops.idConsignee = consignees.id WHERE idLoad = '".$load['id']."' ORDER by stopNumber DESC LIMIT 1 

Сейчас я объединить все результаты в выходе JSON и мне нужно, чтобы держать его таким же образом

ответ

0

Этот запрос не отлажена достаточно:

SELECT 
    t1.*, 
    COUNT(t2.*) as newStops_count, 
    t3.name, t3.address, 
    MAX(t3.stopNumber), 
    MIN(t3.stopNumber) 
FROM `newLoads` t1 
LEFT JOIN `newStops` t2 
ON t2.idLoad = t1.id 
INNER JOIN `consignees` t3 
ON t2.idConsignee = t3.id 

WHERE `id` like '%".$term."%' 
    OR `loadNumber` like '%".$term."%' 
ORDER BY `puDate` DESC 

так что если вы можете предоставить sqlfiddle с некоторыми данными, которые очень помогли бы.

Смежные вопросы