Autor Zpráva
kopo
Profil
Dobrý den,
potřeboval bych poradit se sestavením sql dotazu. Mám dvě tabulky: poptávky (...,id_produkt,...) a financování (...,id_produkt,hodnota,..). V tabulce financování může být stejné id_produkt vícekrát. Potřebuju zjistit počet poptávek na produkty, ke kterým je nabízeno financování. To znamená projít tabulku poptávek a porovnávat, jestli poptavky.id_produkt = financovani.id_produkt. Asi trošku problém je, že v tabulce financování jsou i produkty, které mají hodnotu financování 0 (tzn. že financování k produktu momentálně není). Takže tyto produkt vybírat nechci. Nástřel tedy je: poptavky.id_produkt = financovani.id_produkt WHERE financovani.hodnota != 0.

tabulky vypadají takto:
poptávky
id | id_produkt
1 | 11
2 | 12

financování
id | id_produkt | doba | hodnota
1 1 3 1000
2 2 3 0
3 1 6 1200

V tomto případě, i když je poptávka na produkt 2, nezapočítám ji, protože na produkt 2 je nulová hodnota financování.

Zkoušel jsem toto:
<?
    $query = mysqli_query($conn,"select poptavky.id_produkt from poptavky join financovani on poptavky.id_produkt = financovani.id_produkt WHERE financovani.hodnota != 0 ");
    $pocet = mysqli_num_rows($query);     
    ?>

Ale někde je asi logická chyba. Vrací mi to jiné hodnoty než by mělo.

Děkuji za rady
CZechBoY
Profil
tzn něco jako
SELECT p1.id_produkt, (
  SELECT COUNT(poptavky.id)
  FROM poptavky
  JOIN financovani ON poptavky.id_produkt = financovani.id_produkt
  WHERE poptavky.id_produkt = p1.id_produkt AND financovani.hodnota != 0
) pocet_poptavek
FROM poptavky p1
Nebo to chápu úplně špatně?
kopo
Profil
myslím, že jste to pochopil správně, ale tenhle dotaz mi nevypisuje nic, ani chybu ani hodnotu. ale tahle cesta bude správná.
kopo
Profil
Zadal jsem dotaz do php adminu a vypisuje toto
id_produkt | pocet_poptavek
5 | 0
2 | 15
2 | 15
2 | 15
2 | 15
4 | 0
1 | 0
3 | 0
11 | 0
11 | 0
11 | 0
2 | 15
22 | 0
26 | 1
11 | 0

To je vlastně správně. na produkt s id 2 je 15 poptávek a na produkt id=26 je 1 poptávka. tam, kde jsou nuly jsou produkty, na které není financování.
Jak ted mám vypsat jen počet produktů s id 2 a 26? To znamená záznamy, kde pocet_poptavek != 0.

Děkuji mnohokrát
juriad
Profil
Nějak mi uniká smysl existence tabulky poptávek, vždyť není s financováním nijak těsně propojená.

SELECT f.id_produkt, COUNT(*)
FROM financovani f
WHERE f.hodnota != 0
GROUP BY f.id_produkt
kopo
Profil
propojené nejsou. Má to být pouze jako statistický údaj. do poptávek se ukládají poptávky na všechny produkty. a ve financování jsou také všechny produkty, akorát,ke kterým není přiřazeno financování je hodnota = 0. a já chci vypsat jen poptávky na produkty, které nabízejí financování.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: