|
|
|
Yazan
|
Konu: Onaylanan firmaların ürünlerini listeleme (Okunma Sayısı 990 defa)
|
|
scaka
|
Onaylanan (aktif=1 olan) firmaların ürünlerini ilgili kategori altında listelemeye çalışıyorum ama SQL kodunu bir türlü oluşturamadım. Yardım pls! ÖZETLE TABLO YAPIM: firmalar id aktif (0=onaylanmaış, 1=onaylanmış) urunler id firma (firma id si kayitli) kategori Denediklerim: $sonuc = @mysql_query("SELECT * FROM urunler,firmalar WHERE firmalar.aktif='1' AND urunler.kategori='$kategori' ORDER BY id DESC");
$sonuc = @mysql_query("SELECT urunler.id, urunler.firma, firmalar.id FROM urunler.id AS u, firmalar.id AS f WHERE u.firma=f.id AND f.aktif='1' AND u.kategori='$kategori[id]' ORDER BY u.id DESC");
$sonuc = @mysql_query("SELECT urunler.id FROM urunler.firma, firmalar.id WHERE firmalar.id=urunler.firma AND firmalar.aktif='1' AND urunler.kategori='$kategori[id]' ORDER BY urunler.id DESC");
|
|
|
|
|
Logged
|
|
|
|
Witkey
Ziyaretçi
|
$s1 = mysql_query("Select * from urunler"); $g1 = mysql_result($s1,0,"firma"); $s2 = mysql_query("Select * from firmalar WHERE id='$g1' AND aktif =1 ORDER BY `id` DESC");
Umarım yardımcı olur 
|
|
|
|
|
Logged
|
|
|
|
serkan
Serkan Ceylani
Admin
Offline
Mesaj Sayısı: 134
|
Diyelim ki:
firmalar:
fid aktifmi 1 0 2 1 3 1
urunler icinde:
uid firma_id kategori_id 1 1 3 2 1 5 3 2 7 4 3 8
olsun:
SQL:
SELECT * FROM urunler LEFT JOIN firmalar ON firmalar.fid=urunler.firma_id WHERE firmalar.aktifmi = 1;
Basarilar,
|
|
|
|
|
Logged
|
İletişim: xmpp:serkan@member.turk-php.com (Jabber) (Lütfen sorularınızı forum içinde sorunuz.) Arşiv: http://arsiv.turk-php.comSerkan
|
|
|
|
scaka
|
Öncelikle ilginiz için teşekkür ederim. witkey senin verdiğin örnekte sadece 1 firma listelenebiliyor. serkan senin verdiğin örneğe * yerine urunler.firma,urunler.resim,firmalar.id ekleyince mükemmel bir şekilde çalıştı çok saolasın. Delirmek üzereyken hızır gibi yetiştin valla  SELECT urunler.firma,urunler.resim,firmalar.id FROM urunler LEFT JOIN firmalar ON firmalar.fid=urunler.firma_id WHERE firmalar.aktifmi = 1;
Aslında çok satırlı verilerin bulunduğu tabloda performans açısından * kullanmak sakıncalı biliyorum ama az satırlı tablolar için gerekli fieldleri tek tek yazmamak için * kullanmayı tercih ediyorum. Birden fazla tablonun birleştirildiği sorgularda (mesela bu sorgu) * kullanamayacak mıyız? Yada nasıl kullanabiliriz?
|
|
|
|
|
Logged
|
|
|
|
Witkey
Ziyaretçi
|
ya benım verdıgım zaten tek sonuc ıceren bır sorgu  sadece örnek olması açısından yazmıştım 
|
|
|
|
|
Logged
|
|
|
|
serkan
Serkan Ceylani
Admin
Offline
Mesaj Sayısı: 134
|
Hangi alanlarini sectigini bilmedigim icin * yazdim.Ona gore tabloyuda alanlarin isimlerini "farkli" olacak sekilde ayarladim :
Diyelim ki:
firmalar:
fid aktifmi 1 0 2 1 3 1
urunler icinde:
uid firma_id kategori_id 1 1 3 2 1 5 3 2 7 4 3 8
olsun:
Onemli olan JOIN kismi ile iki tabloyu birlestirmek.Orijinal tablolarinda alan isimleri ayni oldugu icin "sizin" ozel olarak o alanlari tablo ile belirtmeniz gerekiyor...
Her tabloda "id" kullanarak anahtar yaratmak yerine "u_id" gibi kullanirsaniz boyle durmlarla karsilasmazsiniz,
|
|
|
|
|
Logged
|
İletişim: xmpp:serkan@member.turk-php.com (Jabber) (Lütfen sorularınızı forum içinde sorunuz.) Arşiv: http://arsiv.turk-php.comSerkan
|
|
|
serkan
Serkan Ceylani
Admin
Offline
Mesaj Sayısı: 134
|
Her isin bir teknigi vardir...
Istediginiz verileri cekmeyecekseniz/cekemeyecekseniz veritabani kullanmanin ayricaligi nedir?
Sadece unutmayin ki verileri cekerken istemediginiz alanlarin veri setinde bulunmasi sorgu icin gececek zamani ve o sorgu icin ayrilacak hafiza alanini arttiracaktir.O nedenle "*" kullanmak "yanlis" olur demek yerine eger butun alanlarin cekilmesi zorunlu degilse alanlarin birer birer tanimlanmasi daha "dogru" olur demek lazimdir.
|
|
|
|
|
Logged
|
İletişim: xmpp:serkan@member.turk-php.com (Jabber) (Lütfen sorularınızı forum içinde sorunuz.) Arşiv: http://arsiv.turk-php.comSerkan
|
|
|
|
 |
|