Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [sql] jakie napisać zapytanie, Znaleźć id poprzedniego zlecenia
john_doe
post 26.05.2013, 12:03:37
Post #1





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


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


Ten post edytował john_doe 26.05.2013, 12:04:28
Go to the top of the page
+Quote Post
bpskiba
post 26.05.2013, 17:21:25
Post #2





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

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


  1. LIMIT 1,1
Go to the top of the page
+Quote Post
john_doe
post 26.05.2013, 20:33:43
Post #3





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


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.

Ten post edytował john_doe 26.05.2013, 20:45:21
Go to the top of the page
+Quote Post
mmmmmmm
post 26.05.2013, 23:31:11
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


  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.
Go to the top of the page
+Quote Post
john_doe
post 27.05.2013, 07:26:34
Post #5





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


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....
Go to the top of the page
+Quote Post
bpskiba
post 27.05.2013, 17:50:46
Post #6





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

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


  1. ...
  2. ORDER BY order_date DESC, shift_id DESC
  3. LIMIT 1,1
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 Wersja Lo-Fi Aktualny czas: 8.07.2025 - 19:18