lostyazilim
tr.link

mysql ile çoklu arama sorunu

5 Mesajlar 902 Okunma
lstbozum
tr.link

murattkilinc murattkilinc www.instegral.com Kullanıcı
  • Üyelik 06.04.2016
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılım Uzmanı
  • Konum İzmir
  • Ad Soyad M** K**
  • Mesajlar 119
  • Beğeniler 7 / 15
  • Ticaret 0, (%0)
Arkadaşlar merhaba,

Mezun bilgi sistemi için sorgulama yapmaya çalışıyorum. Yazdığım sorgu ise şu şekilde.

SELECT
AlumniAcademicInfo.academic_info_id,
Alumni.name,
`surname`,
`department_name`,
DATE_FORMAT(`grad_date`, '%d %b %Y') AS grad_date,
`grad_type_name`,
AlumniEducationType.name as edu_type,
`email`,
`academic_name`
FROM
mebis.Alumni,
mebis.UnitDepartment,
mebis.AlumniAcademicInfo,
mebis.AlumniGradType,
mebis.UnitAcademic,
mebis.AlumniEducationType
WHERE
AlumniAcademicInfo.alumni_id = Alumni.alumni_id
AND AlumniAcademicInfo.department_id = UnitDepartment.department_id
AND AlumniAcademicInfo.grad_date IS NOT NULL
AND AlumniAcademicInfo.university_id = 1
AND AlumniAcademicInfo.grad_type_id = AlumniGradType.type_id
AND AlumniAcademicInfo.faculty_id = UnitAcademic.academic_id
AND AlumniAcademicInfo.education_type = AlumniEducationType.id
AND AlumniAcademicInfo.grad_type_id LIKE '%%'
AND AlumniAcademicInfo.faculty_id LIKE '%1%'
AND AlumniAcademicInfo.department_id LIKE '%%'
AND Alumni.name LIKE '%%'
AND Alumni.surname LIKE '%%'
AND AlumniAcademicInfo.education_type LIKE '%%'
AND AlumniAcademicInfo.grad_date BETWEEN '' AND curdate()
ORDER BY Alumni.alumni_id DESC
LIMIT 0,10


Yalnız sıkıntı şu; sorguda da gösterildiği üzere like operatöründen dolayı id'sinin içerisinde 1 olan bütün fakülteleri getiriyor. 10 gibi 11 gibi 171 gibi..

Eğer like operatörünü kullanmazsam bu sefer de faculty_id boş bırakıldığında hiçbir sorgu çalışmıyor.

Bu sorunu nasıl çözebilirim?
 

 

www.instegral.com
wmaraci
reklam

SancarSaran SancarSaran WM Aracı Kullanıcı
  • Üyelik 14.01.2018
  • Yaş/Cinsiyet 52 / E
  • Meslek Programcı
  • Konum İzmir
  • Ad Soyad S** S**
  • Mesajlar 319
  • Beğeniler 4 / 111
  • Ticaret 0, (%0)
AND AlumniAcademicInfo.faculty_id = 1
 

 

compost0x compost0x Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 26.05.2018
  • Yaş/Cinsiyet 30 / E
  • Meslek Öğrenci
  • Konum Muğla
  • Ad Soyad A** Y**
  • Mesajlar 99
  • Beğeniler 23 / 19
  • Ticaret 2, (%50)
AND AlumniAcademicInfo.faculty_id <= 1
 

 

yetkilibiri yetkilibiri Yazılım Uzmanı Kullanıcı
  • Üyelik 28.05.2017
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılım Uzmanı
  • Konum İstanbul Avrupa
  • Ad Soyad E** Y**
  • Mesajlar 107
  • Beğeniler 41 / 41
  • Ticaret 2, (%100)
SQL sorgusu oluştururken WHERE kısmında boş gelebilecek alanlar varsa bunları kontrol ederek eklersen sorun kalmaz. Çünkü uygun değilse hiç koşula eklenmemiş olur.


Örnek : ID, SinifID, Ad, Soyad alanlarına sorgu yapacak olalım ve SinifID alanı boş gelebiliyor olsun.


$sorgu = "SELECT * FROM OrnekTablo WHERE ID = 3";

if (strlen($sinifID) != 0){
$sorgu = $sorgu . " AND SinifID = " . $sinifID
}
 

 

wmaraci
wmaraci

murattkilinc murattkilinc www.instegral.com Kullanıcı
  • Üyelik 06.04.2016
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılım Uzmanı
  • Konum İzmir
  • Ad Soyad M** K**
  • Mesajlar 119
  • Beğeniler 7 / 15
  • Ticaret 0, (%0)
yetkilibiri sorun çözüldü teşekkürler
yetkilibiri

kişi bu mesajı beğendi.

www.instegral.com
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al