Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytania zagnieżdżone
woli
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 14.03.2006

Ostrzeżenie: (0%)
-----


Witam,

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":

  1. SELECT a.id AS id,
  2. a.title AS title,
  3. (SELECT MAX(date)
  4. FROM investment
  5. WHERE auctionid = a.id AND ispay="1") - a.startdate AS time
  6. FROM auctions AS a
  7. WHERE a.isend="1"
  8. ORDER BY id ASC
  9. 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?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 05:46