mam mały problem ze skonstruowaniem zapytania.
Mam dwie tabelki "auctions" i "investment"
Tabela "auctions"
--------------------
id
title
startdate // data rozpoczęcia aukcji
isend
Tabela "investment"
--------------------
auctionid
date // data inwestycji
ispay
Chciałbym pokazać aukcje, które zostały zakończone i dodatkowo pobrać czas trwania aukcji odejmując datę startu od daty ostatniej inwestycji.
Mam zapytanie które działa jeżeli sortujemy np. według "id":
SELECT a.id AS id, a.title AS title, (SELECT MAX(date) FROM investment WHERE auctionid = a.id AND ispay="1") - a.startdate AS time FROM auctions AS a WHERE a.isend="1" ORDER BY id ASC LIMIT 0 , 10
Problem jest jeżeli chcę posortować dane według najkrótszego czasu, czyli "ORDER BY time ASC".
Aukcji jest około 40tys. a inwestorów 170tys. Po przefiltrowaniu aukcji (wybraniu tylko zakończonych) jest ich około 30tys. a przypisanych do nich inwestorów około 90tys. Przy takiej ilości strona się wysypuje i pojawia błąd wewnętrzny (Error 500).
Mógłbym napisać skrypt który przejdzie przez wszystkie aukcje i pobierze datę ostatniej inwestycji i uaktualni pole np. "enddate", które dodam do tabelki "auctions".
Tylko, że aukcje są pobierane z danych xml, w których nie podawana jest data zakończenia. Inwestorzy są pobierani z innej listy danych. Za każdym razem musiałby być odpalany ten skrypt aby uaktualnić dane.
Czy istnieje jednak możliwość pobrania tych danych za pomocą jednego zapytania, podczas próby ich wyświetlenia?