Diskuze: MySQL dáta z dvoch tabuliek...
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 18 zpráv z 18.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
SELECT A.EAN
FROM A
JOIN B ON '%' + B.Poznamka + '%' LIKE A.EAN
Co takhle?
Skusil som to, ale nie... zacyklilo sa to a furt nic
Zacyklilo? Na tom nemá co cyklovat. Kolik je v obou tabulkách záznamů?
Zacyklilo v zmysle... mysql pise nacitavam... a furt nic
v tabulke a je asi 5000 zaznamov
v tabulke b cca 100 000 zaznamov
V SQL sa veľmi podrobne nevyznám, ale nemalo to byť skôr takto?
…
JOIN [B] ON [B].[Poznamka] LIKE '%' + [A].[EAN] + '%'
Resp. ešte s konverziou A.EAN na nvarchar pomocou CONVERT(nvarchar, A.EAN)
nefunguje... iba nacita....
a spajanie retazcov pomocou "+" na mysql nefunguje
SELECT A.EAN
FROM A
JOIN B ON B.Poznamka LIKE CONCAT('%', CONVERT(A.EAN, CHAR(128)), '%')
Co tohle?
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
fakt "id.tab1 = id.tab1" ? Nebo mi něco uniklo?
Můžeš sem dát EXPLAIN EXTENDED toho dotazu, co jsem ti napsal?
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)
Solrry moje chyba... mělo tam bát samozřejmě **ON id.tab1 = id.tab2 **
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)) , '%')
Zobrazeno 18 zpráv z 18.