İyi akşamlar arkadaşlar, bir konuda yardımınıza ihtiyacım var. Şimdiden yardımlarınız için teşekkür ederim.
3 Sütundan oluşan bir veritabanım var. (Code,Definition,Descr)
Örnek Veritabanı;
123456 / BİR ÜRÜNÜN TANIMI / Ürünün farklı açıklaması.
123456 / BİR ÜRÜNÜN TANIMI / Ürünün farklı açıklaması.
123456 / ÖTEKİ ÜRÜNÜN TANIMI / Açıklaması farklı ürün.
654321 / BAŞKA ÜRÜNÜN TANIMI / Bir başka ürünün açıklaması.
Burada amacım bir arama formu aracılığı ile bir anahtar kelimeyi "Descr" sütununda arayıp, en fazla eşleşmenin olduğu "Definition" sütununu ve "Code" unu alıp yazdırmak.
Örnek Verecek olursak; form ile aradığım anahtar kelimem "ürünün" bana verilecek sonucun aşağıdaki gibi olması gerekiyor.
Bu Veritabanında 4 satırın 3'ünde ürünün yazıyor.
En Çok Bulunan kod; 123456
En çok eşleşen Tanım; BİR ÜRÜNÜN TANIMI
1. En çok eşleşen Açıklama; Ürünün farklı açıklaması.
2. En çok eşleşen Açıklama; Bir başka ürünün açıklaması.
Bu sonucu bir türlü alamadım, nasıl yapabilirim? yardımlarınız için teşekkür ederim.
PHP ile MYSQL veritabanında veri aramak, saydırmak ve listelemek hakkında yardım
12
●286
- 29-04-2024, 20:17:15
- 29-04-2024, 20:45:35Sıralamaya yarayacak bir ID yok ne yazıkki.oktayc0 adlı üyeden alıntı: mesajı görüntüle
- 29-04-2024, 20:49:58id burada genel veritabanı yapısına göre temsilidir, buraya string içeren bir sütun verirseniz bu sefer alfabetik olarak sıralacayaktır.barisvehbi adlı üyeden alıntı: mesajı görüntüle
- 29-04-2024, 20:52:57Farklı sütunlarda arama yapmam gerekmiyor aslında, sadece 3. sütunda arayacağım, kaç adet olduğunu sayacağım ve en fazla eşleşen 1. ve 2. sütunu yazacağım. örnek vermek gerekirse aşağıda veritabanı ve yazdırma alanının ekran görüntüsünü paylaşıyorum.ynscnr55 adlı üyeden alıntı: mesajı görüntüle
Örneğin CARTONS yazıp aradım, sonuç şöyle olmalı; 3. sütunda CARTONS içerenleri bul, say, yazdır, en fazla hangisinde ise onun 1. ve 2. satırını yazdır.
Veritabanı:

- 29-04-2024, 23:25:31sql_mode=only_full_group_by ayarının default olduğunu varsayarak şu kodu yazıyorum:
select max(Code) as Code, max(Definition), max(Descr), count(code) from test where Descr like '%CARTONS%' group by Code order by count(Code) DESC;
Ekran çıktısı şöyle olur. En üste en çok CARTONS içeren veriyi koyar, sağlaması için count(code) ekledim.
Bir tık performansa etki eder. Eğer sql_mode değeriniz içinde only_full_group_by yoksa sorgu daha basitleşir:
select Code, Definition, Descr FROM test where Descr like '%CARTONS%' group by Code order by count(Code) DESC

