• 15-01-2023, 13:20:58
    #1
    tablo1 ve tablo2 tablolarımı inner join ile birleştiriyorum fakat birleştirirken birleşimi uygulayacağım tablomda arrayı serialize şeklinde veri saklıyorum.

    SELECT * FROM tablo1 INNER JOIN tablo2 ON tablo1.id=tablo2.a:7:{i:0;s:2:"49";i:1;s:2:"50";i:2;s:2:"51";i:3;s:2:"52";i:4;s:2:"54";i:5;s:2:"55";i:6;s:3:"108";}
    ama bu serialize işlemini nasıl eşleyeceğimi bulamadım. Yardım edebilecek birisi olursa sevinirim.
  • 15-01-2023, 14:25:02
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Örneğiniz PHP serileştirilmiş veriye benziyor - bu PHP'ye özgü ve MySQL bunu anlamaz. Genel olarak sorgulamak istediğiniz verileri seri hale getirmemelisiniz. İlişkisel bir veritabanı olarak MySQL, tablolarla ve sütun değerleriyle (genellikle bir bütün değer olarak) çalışacak şekilde tasarlanmıştır. Bazı durumlarda sütun değerleri içinden değerleri sorgulamak/çıkarmak mümkün olsa da, bu genellikle performans açısından tercih edilen birşey değil.
  • 15-01-2023, 20:48:39
    #3
    AndyCap adlı üyeden alıntı: mesajı görüntüle
    Örneğiniz PHP serileştirilmiş veriye benziyor - bu PHP'ye özgü ve MySQL bunu anlamaz. Genel olarak sorgulamak istediğiniz verileri seri hale getirmemelisiniz. İlişkisel bir veritabanı olarak MySQL, tablolarla ve sütun değerleriyle (genellikle bir bütün değer olarak) çalışacak şekilde tasarlanmıştır. Bazı durumlarda sütun değerleri içinden değerleri sorgulamak/çıkarmak mümkün olsa da, bu genellikle performans açısından tercih edilen birşey değil.
    tablo1 INNER JOIN tablo2 AS f ON tablo2.kategori REGEXP CONCAT('.*i:[0-9];s:[0-9]:\"',tablo1.id,'\".*.')
    Buyrun hocam çözümünü buldum.
    Sizinde ihtiyacınız olabilir.

    Dediğiniz gibi zaten veriler ayrı tablolarda fakat bir firma birden fazla kategori üyesi olduğundan mecbur aynı kolonda tutmam gerekir.
  • 28-01-2023, 20:32:05
    #4
    MySQL'de serialize veri tipi ile çalışmak için öncelikle veriyi deserialize etmeniz gerekir. Bu işlemi yapmak için kullanabileceğiniz fonksiyonlar arasında PHP tarafındaki unserialize() fonksiyonu ve MySQL tarafındaki CAST() fonksiyonu bulunmaktadır. Örneğin, aşağıdaki sorguda tablo1 ve tablo2 tablolarını id değerleri eşleştirilerek birleştirmek için kullanılır ve tablo2.a sütununun serialize verisi CAST() fonksiyonu ile deserialize edilir:

    SELECT * FROM tablo1
    INNER JOIN tablo2
    ON tablo1.id = CAST(tablo2.a AS CHAR);
    Ancak, unutmayın ki serialize veri tipi veritabanı için uygun bir veri tipi değildir ve veritabanı için uygun veri tipleri kullanmanız önerilir. Bu nedenle, serialize edilmiş verileri veritabanında saklamamak ve bunları daha sonra deserialize ederek kullanmak daha uygun olacaktır.
  • 29-01-2023, 02:25:05
    #5
    alit adlı üyeden alıntı: mesajı görüntüle
    MySQL'de serialize veri tipi ile çalışmak için öncelikle veriyi deserialize etmeniz gerekir. Bu işlemi yapmak için kullanabileceğiniz fonksiyonlar arasında PHP tarafındaki unserialize() fonksiyonu ve MySQL tarafındaki CAST() fonksiyonu bulunmaktadır. Örneğin, aşağıdaki sorguda tablo1 ve tablo2 tablolarını id değerleri eşleştirilerek birleştirmek için kullanılır ve tablo2.a sütununun serialize verisi CAST() fonksiyonu ile deserialize edilir:

    SELECT * FROM tablo1
    INNER JOIN tablo2
    ON tablo1.id = CAST(tablo2.a AS CHAR);
    Ancak, unutmayın ki serialize veri tipi veritabanı için uygun bir veri tipi değildir ve veritabanı için uygun veri tipleri kullanmanız önerilir. Bu nedenle, serialize edilmiş verileri veritabanında saklamamak ve bunları daha sonra deserialize ederek kullanmak daha uygun olacaktır.
    Bilgi için teşekkürler hocam. Üst tarafta kodu vermiştim işimi çözdüm ama en azından CAST in ne işe yaradığını öğrenmiş oldum ileride kullanırım