Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: warunek do raportu
Forum PHP.pl > Forum > Bazy danych > MySQL
kmpl
Witajcie,

Mam 3 tabele:
sprzet: id_sprzetu, nazwa, indeks, JIM, ilosc
pomieszczenia: id_pomieszczenia, nr_pomieszczenia, opis
lok_sprzetu: id_l_s, id_sprzet, id_pom, iloscloksprzetu, uwagi

W tabeli sprzet mam informacje ile sprzętu i w jakiej ilości mam na stanie (obciążeniu).
W tabeli lok_sprzetu mam dane jaki sprzęt w jakiej ilości znajduje sie w danym pomieszczeniu.

Mam raport gdzie porównuję czy mam zgodnośc z ilością sprzetu z obciążenia (tabela sprzet) a tym co jest w pomieszczeniach.
Np: w tabeli sprzet mam 22 szt. komputerów na stanie a w pomieszczeniach: nr 12 - 1, nr 22 - 12. Lub jakieś ewentualne nadstany.
Zapytanie wygląda tak:

  1. SELECT nazwa, ilosc, razem, COALESCE(ilosc,0)-COALESCE(razem,0) roznica FROM jos_sprzet s LEFT JOIN (SELECT id_sprzet, SUM( iloscloksprz )
  2. razem FROM jos_lok_sprzetu GROUP BY 1 ) x ON s.id_sprzetu = x.id_sprzet


Próbuję dodać jeszcze jedną informację w wyświetlanej tabeli. Chciałbym aby była informacja na podstawie danych- "stan zgodny" lub "stan niezgodny" (przy różnicy). Kiedyś stosowałem switch case, ale w tabeli miałem dodatkowe pole id. Nie wiem za bardzo jak to ugryźć.
phpion
Nie wystarczy:
  1. IF(COALESCE(ilosc,0)-COALESCE(razem,0) = 0, 'zgodny', 'niezgodny') AS stan

?

PS: Przenoszę do MySQL.
kmpl
Dziękuję. No super! Pewnie, że działa. Teraz zamiast kolumny różnica mam stan (zgodny, niezgodny). A żeby na koniec dodać ile wynosi różnica przy stanie niezgodnym?
phpion
Jeśli w osobnej kolumnie to po prostu:
  1. (COALESCE(ilosc,0)-COALESCE(razem,0)) AS roznica

a jeśli ma to być doklejone do "niezgodny" to:
  1. IF(COALESCE(ilosc,0)-COALESCE(razem,0) = 0, 'zgodny', CONCAT('niezgodny ', COALESCE(ilosc,0)-COALESCE(razem,0))) AS stan
kmpl
Wielkie dzięki!!!
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.