Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> czy da sie to zrobic w mysql czy musi byc w php
shakal69
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 6.01.2009

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


Jest tablica :
id_historia_statusow | id_zamowienia | id_statusu_zamowienia


Chodzi o to aby nie trzeba było dla każdego zamówienia z osobna sprawdzać warunku.

np.:
SELECT *FROM `historia_statusow_zamowienia` WHERE id_statusu_zamowienia IN (1,2) AND id_statusu_zamowienia NOT IN (7,9) AND
`id_zamowienia`=10

Chodzi o to aby czymś zastąpić `id_zamowienia`= kolejne id_zamowienia

Próbowałem zrobić to przez GROUP BY ale to to nie to.

Czy jest jakiś sposób w MySql aby wykonać takie zapytanie czy trzeba w php po koleji sprawdzać każdy rekord?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Co do 7,9 - to musza byc zamowienia ktore nie mialy dowolengo stanu z 7 i 9 czy takie ktore nie mialy obu na raz?

  1. SELECT
  2. zamowienia.id_zamowienia,
  3. (SELECT COUNT( * ) FROM zamowienia z2 WHERE z2.id_zamowienia = zamowienia.id_zamowienia AND z2.id_statusu_zamowienia IN (1,2)) AS wanted_count,
  4. (SELECT COUNT( * ) FROM zamowienia z3 WHERE z3.id_zamowienia = zamowienia.id_zamowienia AND z3.id_statusu_zamowienia IN (7,9)) AS unwanted_count
  5. FROM zamowienia GROUP BY zamowienia.id_zamowienia
  6. HAVING wanted_count = 2 -- tyle ile (1,2) ma elementow AND unwanted_count = 2 -- ukryje te rekordy ktore mialy oba stany (7 i 9)


Ten post edytował dr_bonzo 7.01.2009, 13:50:55
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 17.10.2025 - 01:09