Zapytanie liczące równoważniki

0

Mam taki problem mam 4 tabele tabela 1
to spoyzcie w której jest porcja nazwa i id_produktu
Tabela 2 to produktu w której jest id
i teraz tabela przekirowanie substancji
w któ©ej jest id id_substancji i id_produktu
tabela3 w której jest równoważnik

I teraz chodzi o to, że w tabeli substancje są substancje, które mają określony przelicznik dla określonego leku np 0.5 alprazolamu odpowiada 10 mg diazepmu i chodzi o to, żeby te wszystkie spożycie przeliczyć na diazepam oczywiście ile diazepamu odpowiada alprazolamowi jest w kolumnie rownowaznik
Kiedyś coś takie robiliście tylko był inny układ układ
ja na razie coś takiego zrobiłem.

 SELECT ( DATE(IF(HOUR(spozycie.data) >= 5, spozycie.data,
              Date_add(spozycie.data,
                     interval - 1 DAY)
                       )) )
       AS dat,
       spozycie.id_usera,
       Sum(spozycie.porcja / (SELECT rownowaznik
                              FROM   substancje
                              WHERE  spozycie.id_substancji = substancje.id) *
           10) AS
       'spozycie'
FROM   spozycie
GROUP  BY dat,
          spozycie.id_usera
ORDER  BY dat  

A wy zrobiliście coś takiego

 SELECT ( DATE(IF(HOUR(spozycie.data) >= 5, spozycie.data,
              Date_add(spozycie.data,
                     interval - 1 DAY)
                       )) )
       AS dat,
       spozycie.id_usera,
       Sum(spozycie.porcja / (SELECT rownowaznik
                              FROM   substancje
                              WHERE  spozycie.id_substancji = substancje.id) *
           10) AS
       'spozycie'
FROM   spozycie
GROUP  BY dat,
          spozycie.id_usera
ORDER  BY dat  

 SELECT ( DATE(IF(HOUR(spozycie.data) >= 5, spozycie.data,
              Date_add(spozycie.data,
                     interval - 1 DAY)
                       )) )
       AS dat,
       spozycie.id_usera,
       Sum(spozycie.porcja / (SELECT rownowaznik
                              FROM   substancje
                              WHERE  spozycie.id_substancji = substancje.id) *
           10) AS
       'spozycie'
FROM   spozycie
GROUP  BY dat,
          spozycie.id_usera
ORDER  BY dat  
2

Uruchamiasz MySQL Workbench, wklejasz zapytanie takie:

SELECT (DATE(IF(HOUR(spozycie.DATA) >=5 ,
 spozycie.DATA, DATE_ADD(spozycie.DATA,INTERVAL -1 DAY)))) AS dat
, spozycie.id_usera, 
SUM(spozycie.porcja/
(SELECT rownowaznik FROM substancje WHERE spozycie.id_substancji = substancje.id )*10) 
AS 'spozycie' FROM spozycie GROUP BY dat, spozycie.id_usera ORDER BY dat

wchodzisz w Edit->Format->Beautify Query i otrzymujesz:

SELECT 
    (DATE(IF(HOUR(spozycie.DATA) >= 5,
            spozycie.DATA,
            DATE_ADD(spozycie.DATA,
                INTERVAL - 1 DAY)))) AS dat,
    spozycie.id_usera,
    SUM(spozycie.porcja / (SELECT 
            rownowaznik
        FROM
            substancje
        WHERE
            spozycie.id_substancji = substancje.id) * 10) AS 'spozycie'
FROM
    spozycie
GROUP BY dat , spozycie.id_usera
ORDER BY dat

Można? Można.
Z twoim zapytaniem nie zadziała, bo jest totalnie skopane... Pewnie gdzieś nawiasów zamykających brakuje, ale nie wiadomo gdzie.

0

A jeżeli mam komunikat

Subquery returns more than 1 row

To co mam z tym zrobić ?

0

Najszybciej to skorzystać w wyszukiwarki...

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