Czy da się coś takiego zrobić w mysql

0

Mam takie pytanie mam sobie zapytanie które pobiera od użytkownika substancje do wyszukania i można też wpisać dawkę produkty wyszukuje za pomocą whereIn i potem daje normalne where dawka dla każdego produktu.
Ja zamierzam zmodyfikować to tak, że teraz dla każdego produktu będzie inna dawka(czyli każdy produkt będzie miał swoją dawkę do wyszukania) w zapytaniu w formularzu ja wam nie daję kodu źródłowego bo chcę, żebyście mnie nakierowali czego ma użyć w mysql.
Czy da się to zrobić w mysql ?

1

Ciężko się to czyta, jeszcze ciężej to zrozumieć.
Ale skoro dawka przypisana jest do substancji to przecież jakiś join powinien załatwić sprawę.

0

Chodzi o to, że dawka jest przypisana do pojedyńczego rekordu, a ten rekord ma pole o nazwie idProduct.

0

No i to właśnie join łączy takie tabele.
Daj może strukturę tabeli chociaż. Będzie łatwiej.

1

Jeśli dawka jest przypisana do pojedynczego rekordu, a ten rekord ma pole o nazwie idProduct, możesz dostosować zapytanie SQL w następujący sposób:

SELECT produkty.nazwa, dawki.dawka
FROM produkty
JOIN dawki ON produkty.id = dawki.idProduct
WHERE produkty.nazwa IN ('substancja1', 'substancja2', 'substancja3')

To zapytanie zwróci nazwę każdego produktu i odpowiadającą mu dawkę dla produktów o nazwach 'substancja1', 'substancja2', 'substancja3'.

0

Chodzi o to, że dawka to jest wartość taką jak się używa w where.

A ja miałem dać strukture tabeli
tabela wzięcia

  1. id dawka id_product
  2. 1 12 1
  3. 2 500 1
  4. 3 600 2

tabela produktów

  • id nazwa
  • 1 produktA
  • 2 produktB

I teraz w formularzu użytkownik sobie zarzyczy

przeszukać tabele wpisując
nazwę produktu produktA dawka 500
nazwa produktu produktB dawka 600

To mu powinno wyszukać 2 i 3 rekord i pierwszej tabeli.

4

Oto zapytanie SQL, które łączy obie tabele i dodaje warunki WHERE dla nazwy produktu i dawki

SELECT wziecia.id, produkty.nazwa, wziecia.dawka
FROM wziecia
JOIN produkty ON wziecia.id_product = produkty.id
WHERE (produkty.nazwa = 'produktA' AND wziecia.dawka = 500)
OR (produkty.nazwa = 'produktB' AND wziecia.dawka = 600)

To zapytanie zwróci ID, nazwę produktu i dawkę dla rekordów, które spełniają podane warunki. W tym przypadku zwróci rekordy 2 i 3 z tabeli wziecia.

0

Fakt wydało się to prostrze niż myślałem, a ja sobie to komplikowałem.

0

Można też użyć LEFT JOIN na wypadek, jeśli nie będzie produktów o danym ID

1 użytkowników online, w tym zalogowanych: 0, gości: 1