Portál AbcLinuxu, 14. května 2025 06:06

Dotaz: Výběr dat z tabulky co nejsou v druhé tabulce

9.10.2010 17:44 miki.lbc | skóre: 7
Výběr dat z tabulky co nejsou v druhé tabulce
Přečteno: 312×
Odpovědět | Admin
Dobrý den,

potřebuju poradit s věcí, která je určitě hrozně jednoduchá, ale nevím jak na ni.

Mám 2 tabulky dodaky (dodací listy) a faktury_data. Dodaky obsahuje dol_id (primární klíč, int) a další položky. Faktury_data mimo jiné obsahuje dol_id (není cizí klíč, int). Pokud má nějaká položka z faktury_data dodací list je do faktury.dol_id zapsané čílo z dodaky.dol_id (položka v dodaky existuje).

Dodaky je tedy tabulka čísel "dol_id" a nemusí být všechny použity v faktury_data.dol_id. Stejně tak faktury_data nemá vy všech řádcích vyplněné dodáky.dol_id.

Potřebuji dotaz, který vybere "distinct" dodaky.dol_id které nejsou použity ve faktury_data.dol_id.

co to určitě není:

SELECT DISTINCT dodaky.dol_id FROM dodaky,faktury_data WHERE dodaky.dol_id=faktury_data.dol_id - vrátí přesný opak toho co chci (ty které jsou použité)

SELECT DISTINCT dodaky.dol_id FROM dodaky,faktury_data WHERE dodaky.dol_id!=faktury_data.dol_id - vrátí "všechno"

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 3× (podlesh, vlasta, miki.lbc (tazatel))
okbob avatar 9.10.2010 18:01 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Výběr dat z tabulky co nejsou v druhé tabulce
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dotaz typu nesparovane polozky lze resit napriklad vzory:

-- korelovany poddotaz SELECT * FROM tab WHERE NOT EXIST(SELECT * FROM tab2 WHERE tab1.id = tab2.id);

-- subselect -- bacha na NULL v tab2.id SELECT * FROM tab WHERE id NOT IN (SELECT id FROM tab2)

-- pripadne joinem SELECT tab2.* FROM tab LEFT JOIN tab2 ON tab.id = tab2.id WHERE tab2.id IS NULL
9.10.2010 22:55 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Výběr dat z tabulky co nejsou v druhé tabulce
- miesto "EXIST(SELECT *" je lepsie pouzivat "select 1", efekt rovnaky, len sa clovek nemusi spoliehat na optimalizaciu

- zoznam id z tab1 ktore nie su v tab2: select id from tab1 except select id from tab2
2.11.2010 14:04 jeleniste | skóre: 13 | blog: Prokustovo lože
Rozbalit Rozbalit vše Re: Výběr dat z tabulky co nejsou v druhé tabulce
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co takhle

SELECT DISTINCT dodaky.dol_id FROM dodaky,faktury_data WHERE dodaky.dol_id!=faktury_data.dol_id except SELECT DISTINCT dodaky.dol_id FROM dodaky,faktury_data WHERE dodaky.dol_id=faktury_data.dol_id
Nejsem blbý, jen se hloupě ptám

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.