Specifický select

76 views
Skip to first unread message

weron herni

unread,
Apr 29, 2023, 5:13:46 AM4/29/23
to Firebird (CZ)
dobrý den umí
nevím jak se to jmenuje, tak nevím jak hledat

mám tabulku PRODUKTY, má jeden sloupec JMENO, má čtyři záznamy
A,B,C,D

mám tabulku NAHRADY, která definuje, které produkty se dají nahradit jiným pruduktem,
má 2 sloupce JMENO1 a JMENO2
obsahuje 2 záznamy

A,B 
B,C

(znamená to tedy, že A se dá nahradit B i C)

1) Umí Firebird select který mi vráti na dotaz najdi náhrady A výsledek B i C
2) jak se takovému selectu říká, ať můžu studovat

děkuji

weron herni

unread,
May 1, 2023, 3:21:11 PM5/1/23
to Firebird (CZ)
Nenašla by se dobrá duše, která by mi to pomohla napsat, nemám s tím žádné zkušenosti, peru se s tím 2 dny a nejde mi to složit aby to fungovalo správně

toto mám

WITH RECURSIVE n as (
  SELECT * FROM NAHRADY WHERE NAHRADY.JMENO1 = 'A' or NAHRADY.JMENO2 = 'A')
  UNION ALL
  SELECT NAHRADY.* FROM NAHRADY, n WHERE (NAHRADY.JMENO2 = n.JMENO1)
)
SELECT * FROM n;

a vrací mi to jeden řádek
B,A

a potřebuji vrátit
B,A
B,C

díky moc
Dne sobota 29. dubna 2023 v 11:13:46 UTC+2 uživatel weron herni napsal:

weron herni

unread,
May 4, 2023, 8:36:51 AM5/4/23
to Firebird (CZ)
vzhledem k tomu že v sql fakt nejsem moc kovaný, využil jsem pomoci od CHATGPT a nějak jsme to spolu splácali dohromady, a vypadá to že to i funguje

Dne pondělí 1. května 2023 v 21:21:11 UTC+2 uživatel weron herni napsal:

Jiří Činčura

unread,
May 4, 2023, 8:42:24 AM5/4/23
to fireb...@googlegroups.com
> vzhledem k tomu že v sql fakt nejsem moc kovaný, využil jsem pomoci od
> CHATGPT a nějak jsme to spolu splácali dohromady, a vypadá to že to i
> funguje

Vyborne. Kdokoli tohle v budoucnu najde, bude urcite rad, ze tu vidi reseni. Oh wait...

--
Mgr. Jiří Činčura
https://www.tabsoverspaces.com/

weron herni

unread,
May 4, 2023, 12:39:43 PM5/4/23
to Firebird (CZ)
omlouvám se, zapomněl jsem to připojit

tabulka s popisem náhrad cm1_nahr
id_cis = id řádek
cm1, cm2 = popis párů, které zboží nahrazuje které

v dotazu hledám všechny možné náhrady zboží '10'

WITH RECURSIVE cte (id,col) AS (
SELECT id_cis, cm2 FROM cm1_nahr WHERE cm1 = '10'
UNION ALL
SELECT id_cis, cm2 FROM cm1_nahr JOIN cte ON cm1_nahr.cm1 = cte.col
)
SELECT id_cis, cm1, cm2 FROM cm1_nahr WHERE cm1 = '10' OR cm2 IN (SELECT col FROM cte)


děkuji všem zúčastněným, hlavně tedy CHATGPT,  čekají nás ještě velké věci
Dne čtvrtek 4. května 2023 v 14:42:24 UTC+2 uživatel ji...@cincura.net napsal:
Reply all
Reply to author
Forward
0 new messages