• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zapytanie MySQL

0 głosów
323 wizyt
pytanie zadane 6 lipca 2015 w SQL, bazy danych przez babiak Obywatel (1,810 p.)
Mam pytanie,

nigdy nie robiłem takiego zapytania w SQL a odpowiedzi znaleźć nie mogę.

To jest moje oryginalne zapytanie które zlicza mi ilość elementów modelu w danych tygodniu:

SELECT COUNT(p.id) as total FROM plan_produkcji p LEFT JOIN tury t ON t.tura = p.tura  WHERE (p.model="xxx"') AND (t.tydzien = "25")

Zrobiłem i działa. Okazało się jednak, że po wyborze tygodnia ma zliczać wszystkie modele z tygodnia oprócz poniedziałku. Za taki kod był bym bardzo wdzięczny. A jeszcze lepiej jak zliczy z np. tygodnia 25 tygodnia wszystkie modele oprócz tych na poniedziałek ale doda poniedziałkowe z tygodnia wyżej - czyli 26.

 

Nie wiem jak się złapać za to w ogóle :/ I czy da się takie zapytanie montować w MySQL.

 

Pozdrawiam!

1 odpowiedź

+2 głosów
odpowiedź 6 lipca 2015 przez Comandeer Guru (607,960 p.)
wybrane 8 lipca 2015 przez babiak
 
Najlepsza
Pewnie jakoś się da kombinując - pokaż strukturę SQL
komentarz 6 lipca 2015 przez babiak Obywatel (1,810 p.)

Dzięki za zainteresowanie ale nie rozumiem do końca po co to. Miałem na myśli czy idzie to jakoś zapisać w ten deseń:

 

SELECT COUNT(p.id) as total FROM plan_produkcji p LEFT JOIN tury t ON t.tura = p.tura  WHERE (p.model="xxx"') AND (t.tydzien = "25") AND (t.tydzien <> "Monday")

i wiadomo, że t.tydzien <> "Monday" zawsze się spełni ponieważ w t.tury przechowuje numer tygodnia czili INT. Chcę Cię tutaj tylko naprowadzić jak ja kombinuję bo to nie działa oczywyście.

 

komentarz 6 lipca 2015 przez Comandeer Guru (607,960 p.)
No to jak nie przechowujesz w bazie danych o dniu tygodnia a jedynie o samym tygodniu, to nie ma tego jak chwycić.
komentarz 6 lipca 2015 przez babiak Obywatel (1,810 p.)
Jest pole "data_produkcji" w tabeli "tury". Defakto osoba dodająca produkty do bazy wpisuję ową datę produkcji przy zamówieniu, a ja w tle wyciągam z tej daty tydzień i zapisuję go to bazy. W celu np. filtrowania danych zamówień po tygodniu. Pomoże to coś ?
komentarz 6 lipca 2015 przez Comandeer Guru (607,960 p.)

Eh, ale jakiego typu jest to pole? Nie dawkuj info, tylko pokaż strukturę SQL, bo bez tego nie ma o czym rozmawiać.

Jeśli jest to pole typu DATE/DATETIME to można zacząć kombinować z zapytaniem.

komentarz 6 lipca 2015 przez babiak Obywatel (1,810 p.)

tabela: plan_produkcji:

id - int(11)

tura - varchar(11)

model - varchar(11)

tabela: tury:

id - int(11)

tura - varchar(11)

data_produkcji - date - wpisuje sobie w formacie (rok-miesiac-dzien)

tydzien - int(11) - tego pola nie uzupełnia wprowadzająca osoba tylko dodaje się w tle a wartość generuje się na podstawie wpisanej daty_produkcji

 

To wszystko. To turach łącze zapytania.

komentarz 6 lipca 2015 przez babiak Obywatel (1,810 p.)
Czyli jest nadzieja, że da się odwołać do daty produkcji zawierającej się w tyg np. 25 i ten dzień nie będzie poniedziałkiem? ;)
komentarz 6 lipca 2015 przez Comandeer Guru (607,960 p.)

Pole tydzien jest najzupełniej zbędne - da się to ogarnąć przy pomocy pola data_produkcji i funkcji "datowych" MySQL (serio, są genialne, a tak mało się je wykorzystuje!).

Coś takiego mniej więcej:

SELECT COUNT(p.id) AS total 
FROM plan_produkcji p 
LEFT JOIN tury t 
ON t.tura = p.tura
WHERE p.model = 'xxx' 
AND 
(
	(
		DATE_FORMAT(t.data_produkcji, '%u') = 25
		AND DATE_FORMAT(t.data_produkcji, '%a') != 'Mon'
	)
	OR
	(
		DATE_FORMAT(t.data_produkcji, '%u') = 25 + 1
		AND DATE_FORMAT(t.data_produkcji, '%a') = 'Mon'
	)
)

 

komentarz 8 lipca 2015 przez babiak Obywatel (1,810 p.)
Dziękuję Ci pięknie! Działa jak natura chciała :)

Podobne pytania

0 głosów
2 odpowiedzi 478 wizyt
0 głosów
1 odpowiedź 1,575 wizyt
pytanie zadane 25 lutego 2017 w SQL, bazy danych przez kacperl95 Obywatel (1,980 p.)

93,735 zapytań

142,671 odpowiedzi

323,294 komentarzy

63,297 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...