Autor Zpráva
Andrej.B
Profil
Zdravim,

pouzivam spojenie dvoch tabuliek cez JOIN. Funguje ako ma.

objednavky - riadky objednavky
kategoria_produkt - kategorie produktov
AND k.kat = 'Hracky' - vyberam len kategoriu Hracky

SELECT o.*, k.*
FROM `objednavky` o

JOIN kategoria_produkt k
         ON k.`Č. položky`  = o.`Č. položky`
         
 where Miesto = 'SK1'

AND k.kat = 'Hracky'
AND date(STR_TO_DATE(o.`Vytvorené`, "%d.%m.%Y")) = CURRENT_DATE()

Potrebujem si vybrat Predajca z tabulky objednavky_komplet kde sa Predajca nachadza. Najskor som si myslel, ze len pridam dalsiu tabulku JOIN

SELECT o.*, k.*, ok.*
FROM `objednavky` o

JOIN kategoria_produkt k
         ON k.`Č. položky`  = o.`Č. položky`
JOIN objednavky_komplet ok
         ON ok.`Č. objednávky`  = o.`Č. objednávky`
                 
 where Miesto = 'SK1'

AND k.kat = 'Hracky'
AND date(STR_TO_DATE(o.`Vytvorené`, "%d.%m.%Y")) = CURRENT_DATE()

Co ukaze pocet riadkov 0, asi preto, ze previazanie vsetkych 3 tabuliek nieje dobre. Pokial to urobim tak, ze vyhodim uplne JOIN na kategoria_produkt, tak to funguje a da mi mena aj Predajcov, ale samozrejme ze vsetky kategorie, preto tam potrebujem tu kategoriu. kategoria_produkt obsahuje vazbu Č. položky <=> kategoria
SD203451k Hracky
SD325154t Topanky

Ako to mozem upravit aby to pridalo tu tabulku objednavky_komplet a z nej mena Predacov?

Dakujem
Keeehi
Profil
Andrej.B:
Co ukaze pocet riadkov 0, asi preto, ze previazanie vsetkych 3 tabuliek nieje dobre.
Ne, přesně takhle se to dělá. V SQL nevidím žádný problém.

Takhle by ti to mělo vrátit nejvíce dat. Pokud toto zafunguje, můžeš tam postupně vracet ty filtry a koukat co ti to maže.
SELECT o.*, k.*, ok.*
FROM `objednavky` o
 
LEFT JOIN kategoria_produkt k
         ON k.`Č. položky`  = o.`Č. položky`
LEFT JOIN objednavky_komplet ok
         ON ok.`Č. objednávky`  = o.`Č. objednávky`
Andrej.B
Profil
vypada, ze tento filter nejde

AND date(STR_TO_DATE(o.`Vytvorené`, "%d.%m.%Y")) = CURRENT_DATE()

Pokial ho pouzivam iba s tou kategoria_produkt , tak funguje a vybera objednavky z dnesneho dna, pokial tam pridam tu tabulku objednavky_komplet , kde je ten predajca, tak mi nenajde nic, vsetky ostatne filtre funguju, len tento jeden nie.

Napriklad podobny filter na rok/cas dodania mi funguje.

AND (
YEAR(STR_TO_DATE(o.`Požadovaný dátum/čas dodania`, "%d.%m.%Y")) = "2022"
)

ten, co nejde je dnesny or vcerajsi datum Pridania objednavky


pri hrani sa s tym som vyhodil toto

SELECT o.*, k.*, ok.*

A dal som tam len tie co su potrebne ako
SELECT o.Vytvorené as Vytvorené atd.

a zacalo fungovat, pravdepodobne sa to bilo pri tom Požadovaný dátum/čas dodania nejako pri tom znaku "*" v niektorom column v tabulkach.

Diky za postup ako na to.

PS: rozdiel medzi JOIN a LEFT Join som nejako nepobral veru este.
Kajman
Profil
Datum ukládejte jako datum, ne jako string.

Předejte mnoha komplikacím, když si názvy sloupců budete sestavovat jen z ascii písmen a podržítka.

rozdiel medzi JOIN a LEFT Join som nejako nepobral veru este.
Když kliknete na JOIN ve Vašich ukázkách, tak to tam je popsané.
Andrej.B
Profil
vsetky data su exportovane z ERP ako CSV, kazdu hodinu, nemozem si urcit, co bude kde, tabulky maju aj cez 200 stlpcov. Na import dat mam Adminer. Urobit si vlastny nastroj, ktory by menil nazvy stlpcov podla niecoho a az potom to updatoval, to nieje v mojich silach. Dostanem len exportovane data z ERP a tie nahram, neskor bude nahravat niekto iny.
Datumy su v roznych tvaroch ako 'dd.mm.YYYY h:i' alebo 'd.m.YYYY' , jedna tabulka /csv/ mala rovnake mena stlpcov! ... desatinne cisla su niekde ako 1.12 a inde ako 1,12, proste chaos a des ... :)
Kajman
Profil
Příkazem load data from file nejen že můžete import csv zautomatizovat a adminer vůbec nepouštět, ale navíc si můžete v tom jediném přikaze poladit sloupce a např. stringy na datum převést nebo si v převést čárku na tečku, aby tam byla vždy desetinná tečka, se kterou mysql funguje.
Andrej.B
Profil
Kajman:
Příkazem load data from file nejen že můžete import csv zautomatizovat


ale to je uz vyssi divci pre mna.
Uz som rozmyslal, ze si aspon pridam aspon column datum ako timestamp do tych csv rucne, ale nakoniec je toho prilis vela, roznych tabuliek. Ak na to clovek pred importom zabudne, alebo spravi zle, tak su len chyby z toho a do buducna to bude robit clovek, co nema sajnu o tom.

Inak dakujem, budem o tom rozmyslat

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