Autor Zpráva
Kalby
Profil
Dobrej mam trosku slozitejsi dotaz na DB ale nefunguje mi :/ importuju nějaká data do tabulky lekarna_prodej_import, kde jsou údaje jaká lékárna co prodává, a tabulku přípravky kde je seznam přípravků které lze prodávat. A teď potřebuju zjistit když nějaká lékárna začne prodávat nový přípravek, který ještě v tabulce přípravky není aby se mi vypsal. Jinak samozřejmě ten samý přípravek prodává více lékáren, ale poté už se znova nesmí přidat do přípravků protože by tam byl samozřejmě dvakrát a to nechci a to mi to bohužel dělá..
Snad je to trošku pochopitelné :) prostě: Vezmu záznam z tabulky lekarna_prodej_import, kde je uloženej přípravek pod nějakým kódem ( v tomto případě 'sukl') zjistím zdali se tento kód nachází v tabulce přípravky ('kod_excel') kdyz ano nic nevypisuji kdyz ne tak ho vypíšu aby se mohl přidat.

Takhle vypada dotaz
"SELECT DISTINCT sukl, lekarny_prodeje_import.nazev AS excel_nazev
      FROM lekarny_prodeje_import
      LEFT JOIN pripravky ON CAST(lekarny_prodeje_import.sukl AS UNSIGNED)=pripravky.kod_excel 
      WHERE pripravky.id IS NULL
      ORDER BY lekarny_prodeje_import.nazev"
ninja
Profil
Kalby: moznych duplicit u pripravku se zbavis tim, ze sloupec pripravky.sukl udelas jako UNIQUE, respketive zde asi rovnou PRIMARY.

Obecne, je tva siuace ze mas tabulku kde jsou lekarny a vedle toho tabulku s pripravky, pricemz stejny pripravek muze prodavat N lekaren a kazda lekarna prodava N pripravku? V tom priprade se jedna a klasickou vazbu M:N a to se resi 3. tabulku s vazebnimy klici.

LEKARNA
id
nazevlekarny
adrese
vedoucilekarny

PRIPRAVEK
id
nazevpripravku
cena

VAZBALP
lekarna_id
pripravek_id

Dotaz na pripravky prodavane lekarnou s id 4:

SELECT l.*, p.* FROM lekarna l LEFT JOIN vazbalp vlp ON l.id = vlp.lekarna_id LEFT JOIN pripravek p ON vlp.pripravek_id = p.id WHERE l.id = 4;
Kajman_
Profil *
Kalby
Dotaz vypadá v pořádku. Když nic nevypíše, ale proběhne bez chyby, tak tam asi jen nejsou žádné neprovázané přípravky.

Zkusil bych ve where dát pro kontrolu is not null, kde by to mělo vypsat všechny správně provázané..
Kalby
Profil
no ono to nic nevypise to je spravne, zkousel jsem i pridat nove do lekarny a pak to vypise tu nove pridanou, ale problem nastal s nove importovanymi polozkami, ktere meli o rad vyssi kod, ale to nechapu proc, predtim byl sestimistny ten novy je sedmimistny ale to by na to nemelo mit vliv, obe pole jsou nastavena na varchar delky 10. Jinak tu kontrolu s not null jsem zkoušel a vypsalo to všechny kromě těch nových s tím vyšším číslem
Kajman_
Profil *
Pokud jsou obě pole varchar, tak proč tam máte cast? Nemůže být problém tam?
ninja
Profil
Kalby: spojovat tabulky pres sloupce typu varchar je hodne spatne, rychlost bude velmi spatna.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0