Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

query sa dve tabele ...

[es] :: MySQL :: query sa dve tabele ...

[ Pregleda: 3761 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

djdejan

Član broj: 28622
Poruke: 138
..mtsns-ns.customer.sbb.co.yu.



Profil

icon query sa dve tabele ...05.05.2006. u 13:39 - pre 226 meseci
Problematika je sledeca:

npr. imam dve tabele

Tabela1
id, nesto
------------


Tabela2
------------
id
id_iz_tabele1
vrednost


Treba da napisem takav upit koji ce izvuci sve zapise iz tabele1 koji u tabeli2 imaju dva zapisa cije su vrenosti 2 i 3 npr.


Ako tabele imaju sledece zapise:

Tabela1
id, nesto
-----------
id1, fsdfd
id2, dsfr
id3, dsfd

Tabela2
id, id_iz_tabele1, vrednost
-------------------------
1, id1, 2
2, id2, 2
3, id3, 3
4, id3, 2

U ovom primeru treba da vratim zapis iz tabele1 koji ima id3, posto u tabeli2 imam zapise sa njegovim id-jem i one imaju vrednosti 2 i 3.

Mozda je malo konfuzno?
 
Odgovor na temu

Ana Komazec
Beograd

Član broj: 76433
Poruke: 22
*.adsl.sezampro.yu.

ICQ: 274954884


Profil

icon Re: query sa dve tabele ...05.05.2006. u 17:13 - pre 226 meseci
Mozda nesto ovako, samo sto nece uvek davati tacne rezultate ako u polju vrednost imas neke druge brojeve, npr. 4,5,... Ili, ukoliko vrednost za id_iz_tabele1 moze dva puta da ima vrednost 2 ili 3



Code:
 Select Tabela1.id, Tabela1.nesto 
From Tabela1, Tabela2 
Where Tabela1.id=Tabela2.id_iz_tabele1 
          and (Tabela2.vrednost=2 or Tabela2.vrednost=3) 
Group by Tabela1.id, Tabela1.nesto 
Having Count(id_iz_tabele1)>=2


Pozdrav
 
Odgovor na temu

djdejan

Član broj: 28622
Poruke: 138
..mtsns-ns.customer.sbb.co.yu.



Profil

icon Re: query sa dve tabele ...05.05.2006. u 17:39 - pre 226 meseci
To je to!

Hvala Ana !!

[Ovu poruku je menjao djdejan dana 05.05.2006. u 18:44 GMT+1]
 
Odgovor na temu

_owl_

Član broj: 318
Poruke: 1043
*.drenik.net.



+3 Profil

icon Re: query sa dve tabele ...05.05.2006. u 20:35 - pre 226 meseci
To nije to, ovaj upit vraca redove i ako u tabeli2 postoje dva reda sa poljem vrednost jednakim 2 i nijedan red sa poljem vrednost jednakim 3) za dati id.
Owl
 
Odgovor na temu

djdejan

Član broj: 28622
Poruke: 138
..mtsns-ns.customer.sbb.co.yu.



Profil

icon Re: query sa dve tabele ...05.05.2006. u 21:04 - pre 226 meseci
ali tabela je formirana tako da nije moguce za isti id da postoje dve iste vrednosti.
Zato vrsi posao.
Kako bi inace izgledao upit?
 
Odgovor na temu

Ana Komazec
Beograd

Član broj: 76433
Poruke: 22
*.adsl.sezampro.yu.

ICQ: 274954884


Profil

icon Re: query sa dve tabele ...05.05.2006. u 22:31 - pre 226 meseci
Citat:
_owl_: To nije to, ovaj upit vraca redove i ako u tabeli2 postoje dva reda sa poljem vrednost jednakim 2 i nijedan red sa poljem vrednost jednakim 3) za dati id.


Napisala sam da u tom slucaju, i u slucaju da postoje i druge vrednosti sem 2 i 3 nece raditi.


Pozdrav
 
Odgovor na temu

_owl_

Član broj: 318
Poruke: 1043
*.vdial.verat.net.



+3 Profil

icon Re: query sa dve tabele ...06.05.2006. u 23:56 - pre 226 meseci
Da bi sve moglo da radi iz jednog upita potrebno je da baza podzava subselect u FROM klauzuli (valjda se ovako kaze). Osnovu cine upiti
Code:

SELECT t1.id, t1.nesto FROM tabela1 t1, tabela t2 
WHERE t1.id=t2.id_iz_tabele1 AND t2.vrednost=2 
HAVING COUNT(t2.vrednost)=1

Code:

SELECT t1.id, t1.nesto FROM tabela1 t1, tabela t2 
WHERE t1.id=t2.id_iz_tabele1 AND t2.vrednost=3 
HAVING COUNT(t2.vrednost)=1

Sada je potrebno kombinovati podatke dobijene iz ova dva SELECT-a ili preko JOINA ili preko UNION-a, npr. (polje tabela1.id je primarni kluc)
Code:

SELECT t3.id, t3.nesto FROM 
(SELECT t1.id, t1.nesto FROM tabela1 t1, tabela t2 WHERE t1.id=t2.id_iz_tabele1 AND t2.vrednost=3 HAVING COUNT(t2.vrednost)=1) t3, 
(SELECT t1.id, t1.nesto FROM tabela1 t1, tabela t2 WHERE t1.id=t2.id_iz_tabele1 AND t2.vrednost=2 HAVING COUNT(t2.vrednost)=1) t4 
WHERE t3.id=t4.id

ili
Code:
 
SELECT id, nesto FROM (
(SELECT t1.id, t1.nesto FROM tabela1 t1, tabela t2 WHERE t1.id=t2.id_iz_tabele1 AND t2.vrednost=3 HAVING COUNT(t2.vrednost)=1) 
UNION 
(SELECT t1.id, t1.nesto FROM tabela1 t1, tabela t2 WHERE t1.id=t2.id_iz_tabele1 AND t2.vrednost=2 HAVING COUNT(t2.vrednost)=1) )
HAVING COUNT(id)=2




[Ovu poruku je menjao _owl_ dana 07.05.2006. u 00:59 GMT+1]
Owl
 
Odgovor na temu

branimir.ts
Beograd

Član broj: 56661
Poruke: 127
*.sezampro.yu.

Sajt: www.geocities.com/brankob..


Profil

icon Re: query sa dve tabele ...08.05.2006. u 12:22 - pre 226 meseci
Da skratimo pricu.....

TABELA T1
-------------
ID--NAZIV
----------------
1--- MAGACIN
2---SKLADISTE
3---PRODAJA
-----------------

TABELA T2
----------------------
ID T1ID Vrednost
----------------------
1-----3-------12
2-----3--------2
3-----1--------2
4-----1--------3
5-----2--------2
6-----2--------3
-----------------------
Upit:
Code:

SELECT *
FROM T1 AS F
WHERE 
(SELECT COUNT(F.ID) FROM T2 L WHERE L.T1ID=F.ID AND L.VREDNOST IN(2,3) ) = 2;


Rezultat:
Code:

-----------------
ID    Naziv
-----------------
1    MAGACIN
2    SKLADISTE
-----------------


Pozdrav
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: query sa dve tabele ...08.05.2006. u 12:38 - pre 226 meseci
Citat:
branimir.ts: Da skratimo pricu.....

:D

Bez ugnežđenih upita, bez obzira da li postoji više od jednog reda u T2 itd...
Code:

select distinct t1.id, t1.nesto from table1 t1
inner join table2 t21 on t1.id = t21.t1id and t21.vrednost=2
inner join table2 t22 on t1.id = t22.t1id and t22.vrednost=3


[Ovu poruku je menjao jablan dana 08.05.2006. u 13:38 GMT+1]
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: query sa dve tabele ...08.05.2006. u 13:19 - pre 226 meseci
Ili, korišćenjem zgodne COUNT(DISTINCT izraz) klauzule:
Code:

select t1.id, t1.naziv from table1 t1
inner join table2 t2 on t1.id = t2.t1id and t2.vrednost in (2,3)
group by t1.id, t1.naziv
having count(distinct t2.vrednost) = 2
 
Odgovor na temu

[es] :: MySQL :: query sa dve tabele ...

[ Pregleda: 3761 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.