Autor Zpráva
Dr.No
Profil *
Resim jeden problem, je to skoro jako hlavolam:\
Mam tabulku v MySQL, (pro zjednoduseni zobrazim prvni 3 sloupce a 6 radku tabulky)

ID - vlatnik - nazev
--------------------
ID1 - JA - A
ID1 - ON - B
ID2 - ON - C
ID2 - ONA - D
ID1 - ONA - E
ID1 - TO - F

Potrebuji (spravne zadat dotaz do MySQL)/(vytvorit skript), ktery
zobrazi zaznamy s vlastnikem JA (ID pouze jednou) + s vlastnikem Jakykoli jiny(ID muze byt i duplicitni) tzn:A,C,D je spravna odpoved.
Predpokladam, ze by se to mohlo resit na zaklade pole, do ktere se vlozi ID s vlastnikem JA a pak se jednotlive zaznamy porovnavaji(podle ID) s polem a ty ktere nejsou v poli se vypisi tzn: C,D -> k nim se pote prictou vsechny zaznamy, kde vlastnikem je JA tzn:A. Vysledek je C,D,A. Problem je, ze musim zaznamy radit abecedne podle nazvu: (napr: A,C,D nebo D,C,A), ale s pouzitim 2 mysql dotazu,to nedovedu. Nebo jdou vysledky s vice dotazu sloucit a posleze seradit podle abecedy?
Moc diky za vas cas a za pripadnou radu.
ninja
Profil
SELECT DISTICT id, vlastni, nazev FROM tabulka WHERE vlastni = "JA" UNION (SELECT * FROM tabulka WHERE vlastni <> "JA") ORDER BY nazev;
BetaCam
Profil
No ono jde taky o to jaké vstupní informace pro SQL dotaz máš.

Pokud sem to správně pochopil tak to můžeš napsat třeba takhle :

SELECT
   id, vlastnik, name
FROM
   tabulka
WHERE
   vlastnik = 'JA'
LIMIT 1
UNION
SELECT
   id, vlastnik, name
FROM
   tabulka
WHERE
   vlastnik != 'JA'
AND
   id != (
SELECT
   id
FROM
   tabulka
WHERE
   vlastnik = 'JA'
LIMIT 1 )
ORDER BY
   name ASC 


Za předpokladu, že máš pouze vlastníka. Pokud by si měl i ID vlastníka tak můžeš ten poddotaz odstranit a rovnou tam nacpat ID, ale zas je otázka jestli jestli to není tak trochu overkill.
BetaCam
Profil
ninja
SELECT DISTICT id, vlastni, nazev FROM tabulka WHERE vlastni = "JA" UNION (SELECT * FROM tabulka WHERE vlastni <> "JA") ORDER BY nazev;

Tak takhle pochybuji, že ti to odfiltruje vlastníka JA aby si ho tam měl jenom jednou. :)
Dr.No
Profil *
Moc DIKY za prispevky. nevedel jsem ze MySQL je tak schopny nastroj. Jdu se vzdelavat:)
BetaCam
Profil
Dr.No
Moc DIKY za prispevky. nevedel jsem ze MySQL je tak schopny nastroj. Jdu se vzdelavat:)

Přeji hodně štěstí při studiu. :) Nic méně nepsal bych, že MySQL je mocný nástroj, ale že SQL je mocný nástroj. :)
Dr.No
Profil *
Jeste jedna vec (asi jsem to predtim nepopsal presne), ten vlastnik = "JA" muze byt v tabulce i vicekrat a ve vysledku zobrazi vzdy! Ale pokud vlastnik "JA" nema k sobe prirazene nejake ID, tak tyto neprirazene ID se vypisi vsechny. Plati jen, ze stejne ID nemuze mit stejneho vlastnika vicekrat.
Myslim, ze dotaz BetaCama je na spravne ceste ,ale vynecha se LIMIT 1 a poddotaz (
SELECT
id
FROM
tabulka
WHERE
vlastnik = 'JA'
LIMIT 1 )

znamena, ze vezme jedine ID od vlastnika "JA", ja potrebuji aby vzal POLE(ID) (kde vlastnik="JA") a pak
(predchozi cast dotazu)
UNION
SELECT
id, vlastnik, name
FROM
tabulka
WHERE
vlastnik != 'JA'
AND
id != pole(ID)

Lze neco takoveho napsat? projde dotaz celym polem, nebo vezme jen prvni prvek? Diky
BetaCam
Profil
Tak moment ted sem se v tom zamotal úplně. Ty chceš vypsat nejdříve všechny ID ke kterým je přiřazen vlastník "JA" a pak chceš vypsat všechny ID ke kterým není vlastník "JA" přiřazen??
Dr.No
Profil *
Tak ja uvedu jeste jeden priklad k tomu zadani, pridam do nasi tabulky radek navic:
ID - vlatnik - nazev
--------------------
ID1 - JA - A
ID1 - ON - B
ID2 - ON - C
ID2 - ONA - D
ID1 - ONA - E
ID1 - TO - F
ID2 - JA - G <-tento

-vysledkem dotazu se vypise A,G (ID1 i ID2 maji vlastnika "JA", tak duplicitni ID1 a ID2 me nezajimaji)

-pokud by tam byl o posledni radek (G) mene, tak se vypise A,C,D (ID1 ma vlastnika "JA", tak jine duplicitni ID1 me nezajima, + ID2 se vypisi i duplicitne, protoze vlastnik "JA" u nich neexistuje)

Ted uz myslim, ze je to jasne. Uz z toho zacinam blbnout.Pls Help
BetaCam
Profil
Nebo jinak řekněme, že máš v DB následující data :

id 	vlastnik 	nazev
1 	JA 	    A
1 	ON 	    B
2 	ON 	    C
2 	ONA 	    D
1 	ONA 	    E
1 	TO 	    F
1 	JA 	    G
3 	JA 	    H
2 	JA 	    CH
4 	ONA 	    I


Jaké data chceš, aby ti vrátil dotaz??
BetaCam
Profil
Dr.No
Ted uz myslim, ze je to jasne.

no jestli jasné to nevím, ale prubni tohle :
SELECT id, vlastnik, name
FROM tabulka
WHERE vlastnik = 'JA'
GROUP BY id
UNION
SELECT id, vlastnik, name
FROM tabulka
WHERE vlastnik != 'JA'
AND id NOT
IN (
SELECT id
FROM tabulka
WHERE vlastnik = 'JA'
)
ORDER BY name ASC 
Dr.No
Profil *
Diky za rychlou reakci.
z te tve tabulky by se vypsala tato:
A ano
B ne, id=1 uz ma vlastnika "JA"
C,D taky ne, id ma vlastnika "JA" u zaznamu CH
E,F ne, stejny problem
G v tabulce nikdy nebude, protoze je stejne jako A
H ano
CH ano
I ano

takze vystup bude: A,H,CH,I,
BetaCam
Profil
Dr.No
Diky za rychlou reakci.
z te tve tabulky by se vypsala tato:
A ano
B ne, id=1 uz ma vlastnika "JA"
C,D taky ne, id ma vlastnika "JA" u zaznamu CH
E,F ne, stejny problem
G v tabulce nikdy nebude, protoze je stejne jako A
H ano
CH ano
I ano
takze vystup bude: A,H,CH,I,


V tom případě vyzkoušej ten SQL dotaz co sem ti napsal jako posledni. Mělo by to být to co ty potřebuješ.

A pokud máš jistotu, že v tabulce nikdy nebudeš mít vlastníka 'JA' se stejným ID tak můžeš z toho dotazu smazat i to

GROUP BY id
Dr.No
Profil *
Diky moc, uz to dela to, co to ma delat:). jeste jednou diky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: