Diskuze: SQL dotaz, LEFT JOIN
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= 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.
Tezko rici, kde delas chybu, kdyz jsi zadne reseni neposkytl, sql dotaz.
Kdyz delas UNION, muze4s pridat prazdne sloupce.
SELECT a, b, c FROM x
UNION ALL
SELECT d, NULL as e, f FROM y
UNION ALL
SELECT '' as g, NULL as h, i FROM z
Ahoj je to spatny navrh tabulek!. mela by tam byt jeste propojovaci tabulka
neco ve stylu
DealID ProductID
1245 123
1245 475
1245 587
8547 587
8547 475
9991 475
jinak by asi mohlo fungovat propojeni pres substring (findstring) co typ database to jina funkce
SELECT *
FROM deals A INNER JOIN products B ON Findstring(CAST(B.ID AS varchar(10)), A.Product) > 0
V MSSQL je to funkce charindex ,ale bude to spolehlive fungovat pouze pokud
productid je tri mistny, nebo napsat vlastni vyhledavaci funkci.
Doporucuji pridat tu propojovaci tabulku !!
Druhou tabulku "products"
ID NAME
123 Apple
475 Cherry
587 Pineapple
Například mám tabulku "deals"
DealID Product
1245 123,475,587
8547 587,475
9991 475
Cílem je získat data takto:
DealID Product
1245 Apple,Cherry,Pineapple
8547 Cherry,Pineapple
9991 Cherry
Jak pise Petan, minimalne ti tam chybi propojovaci tabulka, ktera by ti spoustu zalezitosti usnadnila
"product_deal"
DealID ProductID
1245 123
1245 475
1245 587
8547 475
8547 587
9991 475
tab data je pak
SELECT
a.DealID
GROUP_CONCAT(b.NAME) AS name
FROM
product_deal a
LEFT JOIN products b ON b.ProductID = a.ID
GROUP BY a.DealID
tab deals je pak
SELECT
a.DealID
GROUP_CONCAT(a.ProductID) AS id
FROM
product_deal a
GROUP BY a.DealID
Zobrazeno 5 zpráv z 5.