Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Imrich Bajmoczy:29.3.2018 13:10

Ahoj

Mám problém...
tabulka A obsahuje stlpec EAN jedinecne cislo
a tabulka B obsahuje stlpec poznamka kde sa medzi inymi udajmi oddelenymi ciarkou moze nachadzat aj cislo EAN

Ako polozit mysql dotaz aby vybral vsetky zaznamy z tabulky A ktorych EAN sa nachadza aj v tabulke B?

SELECT A.EAN FROM A, B WHERE A.EAN LIKE '%B.poznamka%' nefunguje :-(

 
Odpovědět
29.3.2018 13:10
Avatar
Ondřej Crha
Člen
Avatar
Ondřej Crha:29.3.2018 14:09
SELECT A.EAN
  FROM A
  JOIN B ON '%' + B.Poznamka + '%' LIKE A.EAN

Co takhle?

 
Nahoru Odpovědět
29.3.2018 14:09
Avatar
Odpovídá na Ondřej Crha
Imrich Bajmoczy:29.3.2018 15:34

Skusil som to, ale nie... zacyklilo sa to a furt nic :-(

 
Nahoru Odpovědět
29.3.2018 15:34
Avatar
Ondřej Crha
Člen
Avatar
Odpovídá na Imrich Bajmoczy
Ondřej Crha:29.3.2018 15:39

Zacyklilo? Na tom nemá co cyklovat. Kolik je v obou tabulkách záznamů?

 
Nahoru Odpovědět
29.3.2018 15:39
Avatar
Imrich Bajmoczy:29.3.2018 15:57

Zacyklilo v zmysle... mysql pise nacitavam... a furt nic
v tabulke a je asi 5000 zaznamov
v tabulke b cca 100 000 zaznamov

 
Nahoru Odpovědět
29.3.2018 15:57
Avatar
Martin Petrovaj
Tvůrce
Avatar
Martin Petrovaj:29.3.2018 16:31

V SQL sa veľmi podrobne nevyznám, ale nemalo to byť skôr takto?

JOIN [B] ON [B].[Poznamka] LIKE '%' + [A].[EAN] + '%'
Editováno 29.3.2018 16:34
Nahoru Odpovědět
29.3.2018 16:31
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Martin Petrovaj
Tvůrce
Avatar
Martin Petrovaj:29.3.2018 16:39

Resp. ešte s konverziou A.EAN na nvarchar pomocou CONVERT(nvarchar, A.EAN)

Nahoru Odpovědět
29.3.2018 16:39
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Imrich Bajmoczy:29.3.2018 19:59

nefunguje... iba nacita.... :-(

 
Nahoru Odpovědět
29.3.2018 19:59
Avatar
Imrich Bajmoczy:29.3.2018 23:01

a spajanie retazcov pomocou "+" na mysql nefunguje

 
Nahoru Odpovědět
29.3.2018 23:01
Avatar
Ondřej Crha
Člen
Avatar
Odpovídá na Imrich Bajmoczy
Ondřej Crha:29.3.2018 23:26
SELECT A.EAN
  FROM A
  JOIN B ON B.Poznamka LIKE CONCAT('%', CONVERT(A.EAN, CHAR(128)), '%')

Co tohle?

 
Nahoru Odpovědět
29.3.2018 23:26
Avatar
Imrich Bajmoczy:29.3.2018 23:30

:-( nezozral to

 
Nahoru Odpovědět
29.3.2018 23:30
Avatar
albertpatera
Tvůrce
Avatar
Odpovídá na Imrich Bajmoczy
albertpatera:30.3.2018 0:44

Ahoj, podle mě by se tam ještě mělo přidat

.... ON id.tab1 = id.tab1

protože jinak by to vypsalo všechny řádky. Takže by to bylo počet řádků x počet sloupců + ještě bych tam hodil GROUP BY.... mělo by to fungovat. Mohl bys použít i *USING**, ale to pouze v případě, že máš totožné sloupce v obou tabulkách. :-)

Pak dej vědět, jestli to fungovalo ;-)
Ale pozor souslednost příkazů (jak jsou za sebou)

//edit to "+" se může používat jen u "intových " hodnot, pokud je to opravdu číslo, tak se to aboutomaticky přetypuje na INT

Editováno 30.3.2018 0:46
 
Nahoru Odpovědět
30.3.2018 0:44
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na albertpatera
David Hynek:30.3.2018 10:08

fakt "id.tab1 = id.tab1" ? Nebo mi něco uniklo?

Nahoru Odpovědět
30.3.2018 10:08
Čím víc vím, tím víc věcí nevím.
Avatar
Ondřej Crha
Člen
Avatar
Odpovídá na Imrich Bajmoczy
Ondřej Crha:30.3.2018 10:53

Můžeš sem dát EXPLAIN EXTENDED toho dotazu, co jsem ti napsal?

 
Nahoru Odpovědět
30.3.2018 10:53
Avatar
Odpovídá na Ondřej Crha
Imrich Bajmoczy:30.3.2018 12:20

SQL dotaz: EXPLAIN EXTENDED SELECT albatros.EAN FROM albatros JOIN ponuka ON ponuka.poznamka LIKE CONCAT('%', CONVERT(albatros­.ean, CHAR(128)), '%');
Riadky: 2

id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE albatros index NULL ean 47 NULL 4842 100.00 Using index
1 SIMPLE ponuka ALL NULL NULL NULL NULL 114240 100.00 Using where; Using join buffer (Block Nested Loop)

 
Nahoru Odpovědět
30.3.2018 12:20
Avatar
albertpatera
Tvůrce
Avatar
Odpovídá na David Hynek
albertpatera:30.3.2018 16:17

Solrry moje chyba... mělo tam bát samozřejmě **ON id.tab1 = id.tab2 **

 
Nahoru Odpovědět
30.3.2018 16:17
Avatar
Roman
Člen
Avatar
Roman:3.4.2018 12:18

Prvni se uvadi jmeno tabulky az pote jmeno sloupce

SELECT *
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name
Editováno 3.4.2018 12:18
 
Nahoru Odpovědět
3.4.2018 12:18
Avatar
bujna.tomas
Člen
Avatar
bujna.tomas:3.4.2018 13:40

Ono ak je moznost, lepsie by bolo tabulku B normalizovat.
Ale skus toto:

SELECT
    t1.EAN
FROM tableA t1
        INNER JOIN tableB t2
        ON t2.remark LIKE CONCAT('%', CAST(t1.EAN AS CHAR(255)) , '%')
 
Nahoru Odpovědět
3.4.2018 13:40
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 18 zpráv z 18.