Stránka 1 z 1

Jak na MySQL dotaz?

Napsal: ned 2. bře 2008, 11:04
od slavick
Zdravíčko,
s PHP a MySQL teprve začínám, ale potřebuji teď akutně vyřešit následující problém.

Potřeboval bych spočítat kolikrát se v tabulce tbl_zakaznik vyskytují jednotlivé hodnoty ve sloupci prod_id (takže třeba kolikrát je tam 2, kolikrát 8 apod.). Potom už jenom potřebuji, aby tyto hodnoty vynásobily cenu, která je v jiné tabulce a patří konkrétním produktům. S tím si snad poradím.

Bohužel už je to běžící aplikace a já se k ní snažím připrogramovat jenom část, kde se bude zobrazovat jak se jednotlivé produkty prodávají. K původní aplikaci samozřejmě neexistuje dokumentace. Takže se mi nechce pouštět se do předálávání celé databáze i původní aplikace.

Díky za tipy a případná nakopnutí správným směrem.

Napsal: ned 2. bře 2008, 12:22
od matajon
Možná by bylo dobré napsat přesnou strukturu těch dvou tabulek a jak jsou spojeny. Ale obecně by to bylo nějak takto -

Jenom spočítání výskytů -

Kód: Vybrat vše

SELECT prod_id, COUNT(prod_id) FROM tbl_zakaznik GROUP BY prod_id
A spojení s další tabulkou a vynásobení cenou -

Kód: Vybrat vše

SELECT tbl_zakaznik.prod_id, (COUNT(tbl_zakaznik.prod_id) * dalsiTabulka.cena) AS vyslednaCena FROM tbl_zakaznik INNER JOIN dalsiTabulka ON tbl_zakaznik.prod_id = dalsiTabulka.id GROUP BY tbl_zakaznik.prod_id

Napsal: ned 2. bře 2008, 13:19
od slavick
Díky moc, vyzkouším to.
Struktura tabulek je takováhle. Nechtělo se mi to vypisovat, tak jsou to screenshoty :)

tbl_product
Obrázek


tbl_customer
Obrázek

V tbl_product je prod_id primárním klíčem. Stejná hodnota je i v tbl_customer. Představa je tedy taková, že by se spočítalo kolikrát se vyskytují jednotlivé prod_id v tbl_customer (jak jsem psal výše). A ty to výsledky (pole výsledků?) by se pak přiřadily podle prod_id k jednotlivým prod_name nebo prod_code (to je vcelku jedno) a vynásobila se tím cena. Celé se to má ještě vypsat do tabulky, kde bude jméno/kód produktu a za kolik se toho prodalo. Doufám, že jsem to napsal nějak pochopitelně :)

P.S.: Té zmršené češtiny si nevšímejte :) Je to divný, ale když si nechám vypsat všechny produkty do tabulky (což zvládnu ;), tak tam je čeština v pohodě. Ale to není teď ten hlavní problém :)

Primitivní dotaz...

Napsal: úte 6. kvě 2008, 18:58
od martin.ol
Zneužiju to tu :-)

Kód: Vybrat vše

$query = "SELECT * FROM `".$prefix."foto` INNER JOIN `".$prefix."fotogalerie` ON `".$prefix."fotogalerie`.`URL`  LIKE '%`".$prefix."foto`.`Id`%' ORDER BY `".$prefix."foto`.`Zobrazeno` DESC LIMIT 5";
Pro Vás asi primitivní, ale pro mě zatím věda :lol: Jak mu říct, že má vybrat vše z foto a z fotogalerie z řádku kde je v URL obsaženo Id z řádku ve foto?

Neboli

Kód: Vybrat vše

 SELECT *
FROM `web_foto`
INNER JOIN `web_fotogalerie` ON `web_fotogalerie`.`URL` LIKE '%18%'
ORDER BY `web_foto`.`Zobrazeno` DESC
LIMIT 5 
co napsat místo té 18, aby to byla proměnná :?:

Napsal: ned 11. kvě 2008, 19:28
od Lamicz
Nevim, jestli to chapu spravne, ale mam pocit, ze nemas spravne navrzenou strukturu tabulek. Provazovat pres LIKE je humus, protoze se prochazi cely tabulky a musi se parsovat ty dany vyrazy v datech. Tohle je IMHO klasicky priklad na relaci 1:N. Id fotogalerie a k ni N Id_foto.