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

[RESENO!]Kako selektovati iz dve tabele, a ne duplirati redove?

[es] :: MySQL :: [RESENO!]Kako selektovati iz dve tabele, a ne duplirati redove?

[ Pregleda: 3314 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bokivaol
bojan jovic
Quality Assurance Specialist
Beograd

Član broj: 87439
Poruke: 164



+21 Profil

icon [RESENO!]Kako selektovati iz dve tabele, a ne duplirati redove?10.10.2010. u 02:34 - pre 164 meseci
Zdravo drugari,
Imam dve tabele "user_registration" i "newsletter". Kada posebno stavim komande 1 ili 2, svaka komanda radi za sebe ono sto treba da radi. Medjutim, hteo bih da spojim ove dve tabele tako da iz tabele "user_registration" izabere sve korisnike koji imaju `newsletter`='1' i da ih poredjam po emailovima I (AND) da iz tabele "newsletter" izaberem sve korisnike. Kako da spojim ove dve tabele da dobijem ovo sto sam zeleo, a da se ukoliko postoji korisnik koji se nalazi u obe tabele, tj. postoji isti email, taj korisnik prikazuje samo jednom, a ne dva puta?

Molio bih da napisete kod, objasnjenja "uradi to preko ovoga ili onoga" mi nece mnogo znaciti.


Code:
$t = dbFetchArray(dbQuery("select * from `newsletter` where `id`='".$u."'"),MYSQL_BOTH);


Code:
<?php
        $s = dbQuery("select * from `user_registration` where `newsletter`='1' order by `email`");........1        
        $s = dbQuery("select * from `newsletter` where `email`<>'' order by `email`");........................2
        $count = dbNumRows($s);
        if($count>0){
        ?>
        <select size="6" multiple="multiple" id="multi" name="multi[]" style="width:200px;">
        <?php        
            while($t = dbFetchArray($s,MYSQL_BOTH))
            {    
        ?>
            <option value="<?php echo $t["id"]; ?>"><?php echo $t["email"]; ?></option>
        <?php
            }        
        ?>


[Ovu poruku je menjao bokivaol dana 10.10.2010. u 17:49 GMT+1]
Ako 'oces da pobedis ... ne smes da izgubis.
 
Odgovor na temu

Goran Rakić
Beograd

Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Kako selektovati iz dve tabele, a ne duplirati redove?10.10.2010. u 04:31 - pre 164 meseci
Ne vidim da si napisao strukturu tvojih tabela, šta kaže DESCRIBE newsletter i DESCRIBE user_registration
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

bokivaol
bojan jovic
Quality Assurance Specialist
Beograd

Član broj: 87439
Poruke: 164



+21 Profil

icon Re: Kako selektovati iz dve tabele, a ne duplirati redove?10.10.2010. u 11:32 - pre 164 meseci
Ovo su slike strukture tabela:
User registration table
Newsletter table
Ako 'oces da pobedis ... ne smes da izgubis.
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: Kako selektovati iz dve tabele, a ne duplirati redove?10.10.2010. u 13:32 - pre 164 meseci
GROUP BY email? (nisam gledao strukture tabela)
 
Odgovor na temu

bokivaol
bojan jovic
Quality Assurance Specialist
Beograd

Član broj: 87439
Poruke: 164



+21 Profil

icon Re: Kako selektovati iz dve tabele, a ne duplirati redove?10.10.2010. u 13:47 - pre 164 meseci
Ne znam da li sam razumljivo napisao pitanje, ali poenta je u tome, kako iskombinovati ovu komandu
Code:
$s = dbQuery("select * from `user_registration` where `newsletter`='1' order by `email`");

sa ovom:
Code:
$s = dbQuery("select * from `newsletter` where `email`<>'' order by `email`");

da bi dobio nesto ovako:

Code:
$s = dbQuery("select * from `user_registration` where `newsletter`='1' AND "select * from `newsletter` where `email`<>'' order by `email`" order by `email`");
. Naravno ovo sto sam napisao nije tacno, ali sam hteo da priblizim sta mi je potrebno.

Potrebno je da se prikazu svi emailovi iz ovih tabela koji nisu isti, tj. ukoliko ima istih da se prikaze samo jednom. To je to.
Ako 'oces da pobedis ... ne smes da izgubis.
 
Odgovor na temu

Tudfa
Jovicevic Vladimir

Član broj: 152699
Poruke: 384
*.dynamic.sbb.rs.



+3 Profil

icon Re: Kako selektovati iz dve tabele, a ne duplirati redove?10.10.2010. u 16:19 - pre 164 meseci
Citat:
bokivaol: Potrebno je da se prikazu svi emailovi iz ovih tabela koji nisu isti, tj. ukoliko ima istih da se prikaze samo jednom. To je to.


Probaj ovako, ako ti samo trebaju email-ovi (bez dupliranja)
Code:

(SELECT `email` FROM `user_registration`)
UNION
(SELECT `email` FROM `newsletter`)
ORDER BY `email`


Inace ne znam bas ni koliko je ovo optimalno, al nisam shvatio tacno jel ti trebaju samo emailovi ili jos nesto...
 
Odgovor na temu

bokivaol
bojan jovic
Quality Assurance Specialist
Beograd

Član broj: 87439
Poruke: 164



+21 Profil

icon Re: Kako selektovati iz dve tabele, a ne duplirati redove?10.10.2010. u 16:43 - pre 164 meseci
Citat:
Tudfa: Probaj ovako, ako ti samo trebaju email-ovi (bez dupliranja)
Code:

(SELECT `email` FROM `user_registration`)
UNION
(SELECT `email` FROM `newsletter`)
ORDER BY `email`


Treba mi ovo sto si napisao, samo da iz tabele "user_registration" prikazuje samo one emailove koji imaju "newsletter=1"
Ako 'oces da pobedis ... ne smes da izgubis.
 
Odgovor na temu

bokivaol
bojan jovic
Quality Assurance Specialist
Beograd

Član broj: 87439
Poruke: 164



+21 Profil

icon Re: Kako selektovati iz dve tabele, a ne duplirati redove?10.10.2010. u 16:49 - pre 164 meseci
HVALA TUDFA!!!

Resio sam ovo

Code:
"(SELECT `email` FROM `user_registration` WHERE `newsletter`='1') UNION (SELECT `email` FROM `newsletter`) ORDER BY `email`"


TUDFA, hvala jos jednom

Ako 'oces da pobedis ... ne smes da izgubis.
 
Odgovor na temu

Schmidt
RHCE

Član broj: 80784
Poruke: 647
*.broadband.blic.net.



+10 Profil

icon Re: [RESENO!]Kako selektovati iz dve tabele, a ne duplirati redove?02.11.2010. u 20:22 - pre 164 meseci
posto nisi napravio obicni text "show create table newsletter" i "show create table user_registration" ne mogu da rekonstruisem tabele i napravim testni unos podataka...

Mislim da to sto zelis moze da odradi ovaj query ali nisam siguran jer nema tabele a ne zelim da ih prekucavam:

Code:

select a.email from newsletter as a left join user_registration as b on (a.email=b.email) where b.newsletter=1;


Ovo bi vjerovatno trebalo da se joinuje po user id-u jer bi trebalo da id u obe tabele bude kljuc koji ih povezuje, odnosno, korisnicki ID. Mada, opet, autoincrement na obe tabele ne garantuje da ce korisnik imati isti ID u obe tabele.
 
Odgovor na temu

[es] :: MySQL :: [RESENO!]Kako selektovati iz dve tabele, a ne duplirati redove?

[ Pregleda: 3314 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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