• 24-02-2022, 15:05:28
    #1
    SORUNU ÇÖZDÜM.

    İÇ İÇE SQL İLE ÇÖZDÜM AMA KOŞUL KULLANARAK

    2 Adet tablom var.

    1. Tablo urunler
    2. Tablo kategoriler

    Kategoriler.php sayfasında kategoriye bağlı ürünleri çekerken gelen sef_link ve id parametresiyle veri çekiyorum.

    Ürünlerin kategorileri, kategoriler tablosunda depolanıyor.

    SELECT * FROM kategoriler WHERE id=$kat_id<= Kategori içinSELECT * FROM urunler WHERE kat_id=$kat_id <= Ürün için

    Ürünler son kategoriye göre ekleniyor, örneğin; 2x50cm HALI <= isimli bir ürün [ Ev, dekorasyon => Halı, Paspas => Halılar ] isimli kategoriyle kayıt ediliyor.

    Halılar kategorisine girince, ona bağlı ürünler listeleniyor ama Ev, dekorasyon kategorisine girince listelenmiyor.

    Bu veritabanını tasarlayan arkadaş, enteresan bir yol izlemiş.



    Yani basit hesap ürünler son kategoriye göre listeleniyor, ilk kategorinin altında ki tüm kategorilerden ürün listeletmem gerekli.

    NOT: iç içe bir sorgu yazdım ama bazı kategoriler 4. alt kategori fln oluyor hadi max 2. alt kategori olsa, biraz çözüme yaklaşacak gibi oluyorum, sonra olmuyor.
    Beynim durdu.

    Son yaptığım deneme;
    $sorgu = "SELECT * FROM `kategoriler` WHERE bagli_kategori_id IN (SELECT * FROM kategoriler WHERE bagli_kategori_id=[COLOR=#D9DAE9][FONT=Open Sans]$kat_id[/FONT][/COLOR] )";
  • 24-02-2022, 15:13:37
    #2
    Olması gereken budur zaten fazladan tablo kullanmak gereksizdir. Mobilde olduğum için size mantığını anlatacağım. Öncelikle bir tane sorgu yazacaksınız ve sadece 0 olanları çekecek ve fonksiyonunuzda parent_id diye bir değişken olacak, 0 olan ana kategorileri çektiğinize göre gerisi sadece fonksiyonu döngüye alıp parent_id'yi çektiğiniz id olarak değiştirmek. Bu sayede sonsuz kategori sisteminiz olacak.

    https://stackoverflow.com/questions/...rchy-php-mysql
  • 24-02-2022, 15:19:01
    #3
    Scarecrow adlı üyeden alıntı: mesajı görüntüle
    Olması gereken budur zaten fazladan tablo kullanmak gereksizdir. Mobilde olduğum için size mantığını anlatacağım. Öncelikle bir tane sorgu yazacaksınız ve sadece 0 olanları çekecek ve fonksiyonunuzda parent_id diye bir değişken olacak, 0 olan ana kategorileri çektiğinize göre gerisi sadece fonksiyonu döngüye alıp parent_id'yi çektiğiniz id olarak değiştirmek. Bu sayede sonsuz kategori sisteminiz olacak.

    https://stackoverflow.com/questions/...rchy-php-mysql
    Olması gereken böylede ama daha basit bir çareside var gibi.
    Örneğin ana kategorinin yanına bir sütun eklemesi yapıp adına Alt_kategoriler dese ve içine yeni eklenen alt kategoriler virgül ile ayrılarak yazılsa, enteresan sorgulara gerek bile kalmayacak.
    örn; 3,12,73,442 gibi.

    İlginize teşekkürler hocam bu arada, kaynağı inceleyeceğim.
  • 24-02-2022, 17:34:08
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba,
    Left Join veya Right Join veya Full Outer Join Kullanabilirsin.
    SELECT * FROM kategoriler
    LEFT / RIGHT / FULL JOIN urunler ON urunler.bagli_kategori_id = kategoriler.kategori_id
    AND kategoriler.kategori_id LIKE '%1%' şeklinde
    veya
    WHERE kısmında LIKE ile deneyebilirsin.
    WHERE kategoriler.kategori_id LIKE '%1%'
    OR urunler.bagli_kategori_id LIKE '%10%'