[ bokivaol @ 10.10.2010. 02:34 ] @
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]
[ Goran Rakić @ 10.10.2010. 04:31 ] @
Ne vidim da si napisao strukturu tvojih tabela, šta kaže DESCRIBE newsletter i DESCRIBE user_registration
[ bokivaol @ 10.10.2010. 11:32 ] @
Ovo su slike strukture tabela:
User registration table
Newsletter table
[ Aleksandar Ružičić @ 10.10.2010. 13:32 ] @
GROUP BY email? (nisam gledao strukture tabela)
[ bokivaol @ 10.10.2010. 13:47 ] @
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.
[ Tudfa @ 10.10.2010. 16:19 ] @
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...
[ bokivaol @ 10.10.2010. 16:43 ] @
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"
[ bokivaol @ 10.10.2010. 16:49 ] @
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
[ Schmidt @ 02.11.2010. 20:22 ] @
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.