Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] jakie napisać zapytanie
Forum PHP.pl > Forum > Bazy danych > MySQL
john_doe
Witam,

mam takie pola do wykorzystania w SELECT

order_id -- id zlecenia
order_date -- data zlecenia
order_shift -- zmiana 1,2,3, zmiana na której wykonywana jest czynność, następuje po sobie oczywiście
order_machine --zlecenie przyporządkowane jest do maszyny

jak znaleźć order_id poprzedniego zlecenia dla danej maszyny? czyli tego, które było robione tuż przed nim dla danej maszyny
poniższy skrypt działa ok, jeśli takie zlecenie istnieje, jeśli nie istnieje może wyznaczyć id zlecenia, które jeszcze nie zostało robione a to jest do lufu

  1. SELECT order_id
  2.  
  3. FROM orders JOIN machines
  4. ON machines.machine_id = orders.machine_id
  5.  
  6. WHERE
  7. orders.order_id <> 73 AND -- to jest id obecnego zlecenia, tak ma być - wstawiane dynamicznie
  8.  
  9. machines.machine_number = 5 -- numer maszyny wstawiany dynamicznie
  10.  
  11.  
  12.  
  13. ORDER BY orders.order_date ASC, order_shift DESC
  14.  
  15. LIMIT 1
bpskiba
  1. LIMIT 1,1
john_doe
niestety to nie wystarczy. dla takich danych np.

order_id;order_date;shift_id;machine_id
73;2013-05-26;1;1
68;2013-05-26;2;1
69;2013-05-26;3;1
71;2013-05-27;1;1
70;2013-05-27;2;1

załóżmy, że jesteśmy w linii o id 70
zapytanie winno zwrócić order_id = 69

Generalnie ja do tego zapytania mogę przekazać id zlecenia z aktualnej zmiany.
mmmmmmm
  1. SELECT Max(order_id) FROM orders JOIN machines ON machines.machine_id = orders.machine_id WHERE orders.order_id < 73 AND machine.machine_number=5

Przy cichym założeniu, że order_id jest rosnące.
john_doe
no właśnie nie jest jak widać na przykładzie danych sad.gif

zależy jak użytkownik doda zlecenia. Jednak wcale nie muszą one być wprowadzone po kolei.

Mogę to osiągnąć pisząc metodę i już. Po prostu myślałem, że osiągnę to prościej - zapytaniem....
bpskiba
  1. ...
  2. ORDER BY order_date DESC, shift_id DESC
  3. LIMIT 1,1
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.