Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Veritabanları & SQL

Cevapla
 
LinkBack Seçenekler
Eski 07/05/2003, 15:17   #1 (permalink)
...
 
HunTER Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 08/2002
Yer: İstanbul
Mesaj: 8,753
Varsayılan SQL Sorgusu..

Selamlar.. Elımde uc tablo var.. ana_haber, ana_yazi ve ana_yorum.. ana_yorum tablosu kalan ıkı tablo tarafından ortak kullanılıyor..

Herneyse sorun su.. Ben bu yapıda bır yazı kategorısıne aıt en son eklenen yazının tarıhını (bu forumda oldugu gıbı) ve hangı tabloda (yazı,yorum) oldugunu bulmak ıstıyorum..

Ama son eklenen bır yazıda olabılır bır yorumda.. Bu durumda nasıl bır sorgu kullanmalıyımkı benım ıcın ana_yorum ve ana_yazı tablolarını bırlestırıp sadece gecerlı kategorıye aıt kayıtların her ıkı tablodakı tarıhlerını karsılastırıp en buyuk tarıhe sahıp alanın ıd sını versın?

Ben buraya kadar gelıp takıldım...

Kod:
select
yazi_id,
yorum_id,
if(max(yorum_tarih)>max(yazi_tarih),
   max(yorum_tarih),
   max(yazi_tarih))
as tarih

from
ana_yorum,
ana_yazi

where
yorum_tablo = 'ana_yazi' and
yorum_hedef = yazi_id and
yazi_kategori = '2'

group by
yazi_kategori
Yanı elde ettıgım sonuc su sekılde..

Kod:
yazi_id | yorum_id | tarih
1       | 1        | 2003-04-22 16:00:00
Ama bu tarıh hangı tabloya aıt bellı degıl.. Bıde nedenını anlamasam bıle id ler duzgun gelmıyor.. Yanı o tarıh aslında yazi_id si 2 olan kayda aıt ama gelen yazi_id herdurumda 1..

Neyse fazla uzattım sızce ne yapmam lazım?
HunTER hatta değil   Alıntı Yaparak Yanıtla
Eski 07/05/2003, 15:25   #2 (permalink)
...
 
HunTER Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 08/2002
Yer: İstanbul
Mesaj: 8,753
Varsayılan

Yanı benım ıstedıgım aslında..

Kod:
id | uye | tarih
1  | 2   | 2003-04-22 16:00:00
Buna benzer bı sonuc dondurmek burda id den kasıt son eklenen yazı ıse yazi_id, yok yorum ıse yorum_hedef degerı..

Uye ıse yıne benzer sekılde son eklenen yazi ıse yazi_uye, degıl yorum ıse yorum_uye..

Tarih ıse son eklenen yazı yada yorum kaydının tarihi.. Cokmu sey ıstıyorum acaba?
HunTER hatta değil   Alıntı Yaparak Yanıtla
Eski 07/05/2003, 16:11   #3 (permalink)
Registered User
 
Üyelik Tarihi: 01/2003
Mesaj: 6,337
Varsayılan

Ne diyorsun yahu
10 kere okudum daha cozemedim



Tablolari birlestirmek icin UNION kullanabilirsin.

Mesela

SELECT 'yorum', yorum_id, yorum_tarih AS Tarih
FROM ana_yorum
WHERE ...
UNION
SELECT 'yazi', yazi_id, yazi_tarih AS Tarih
FROM ana_yazi
WHERE ...
ORDER BY Tarih DESC
LIMIT...


Bu isine yarar mi bilmiyorum cunku soruyu anlayamadim.
acemi hatta değil   Alıntı Yaparak Yanıtla
Eski 07/05/2003, 16:18   #4 (permalink)
Luke is back...
 
mkarabulut Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2002
Yer: ../Dark_Side
Mesaj: 2,443
Varsayılan

Alıntı:
Orjinal mesajı gönderen acemi5
Ne diyorsun yahu
10 kere okudum daha cozemedim
Demek ki bende bi anormallik yokmuş , bi iki kere okudum ama hiç bi şey anlamadım, açlıktandır dedim kendime..

Neyse..
__________________
Do or do not. There is no try.
mkarabulut hatta değil   Alıntı Yaparak Yanıtla
Eski 07/05/2003, 16:36   #5 (permalink)
...
 
HunTER Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 08/2002
Yer: İstanbul
Mesaj: 8,753
Varsayılan

Eheh kusura bakma ya.. Ama uzun uzun anlatıp kafanızı sısırmeyım demıstım.. Sımdı durum su.. Elımde uc tablo var

ana_haber
------------
haber_id
haber_uye
haber_kategori
...

ana_yazi
------------
yazi_id
yazi_uye
yazi_kategori
...

ana_yorum
------------
yorum_id
yorum_uye
yorum_tablo
yorum_hedef

Bunun yanında bırde yazı kategorılerını tutan bır tablo ve uye tablosu var..

kat_yazi
------------
kat_id
kat_baslik
kat_icerik
kat_hedef (hedef 0 ıse bolum, 0 dan buyuk ıse kategorı)

ana_uye
----------
uye_id
uye_user
....

Yanı hersey ılıskısel.. Ornegın o bahsettıgım kategorı degerı kat_yazi tablosundan gelıyor.. Ben once hedefı 0 ve baslıgı "Ana bolum" olan bır kayıt eklıyorum kat_yazi ya boylece "Ana bolum" adında bır bolumum olmus oluyor.. Ardından bu bolume bır kategorı eklemek ıstedıgımde hedefı "1" ve baslıgı "Alt kategorı" olan bır kayıt daha eklıyerek bu ısıde halledıyorum..

Bu "Alt kategorı" nın ıdsıde ornegın "2" dıyelım.. Bunuda bu kategorı altına yazı eklerken yazının yazi_kategorı alanına yazıyorum..

Ote yandan yorum tablosu ıcın bu tıp bır alan tanımlamadım.. Yanı yorumları saklarken sadece kaydın hangı tabloya ve o tablodakı hangı kayda aıt oldugunu tutuyorum sadece..

Dıyelımkı yazi_id si "1" olan yazıya bı yorum eklemek ıstıyorum ozaman gıdıp ana_yorum tablosuna yorum_tablosu "ana_yazi" ve yorum_hedefı "1" olan bır kayıt eklıyorum..

Sımdı hersey acıksa sorun su.. Ben bu bolumlerı (hedefı 0 olan kategorılerı) lıstelerken soyle bır cıktı almak ıstıyorum..

PHP Kodu:
Bolum Adı
---------
Ana Bolum
  Kategorı Adı 
Yazı Sayısı Yorum Sayısı En Son
  
------------------------------------------------------------------
  
Alt kategorı 1           1            Ertuğrul Yıldırım
                                              2002
-05-22 16:00:00

                                              
(Yazıya gıden lınk
                                              dolayısıyla yazi_id
)
.... 
Yazı sayısını bulmak kolay.. Yorum sayısıda bulunabılıyor ama sorun en son eklenen kayıtta.. Cunku son eklenen kayıt bu kategorı altında bır yorumda olabılır bır yazıda..

Iste benım ıstedıgım seyde bu son eklenen kaydın hangı tabloda hangı tarıhte ve hangı uye tarafından yazıldıgını bılmek.. Cunku ona gore Uye adını yazı tarıhını ve yazıya gıden lınkı yazdırıcam ekrana..

Sımdı bana "pekı nıye bu kadar ugrasıyosun, ıkı sorgu ve bır karsılastırma ıle bu halledılebılır" dıyeceksınız.. Bılıyorum ama ben bunu tek bır sorgu ıle yapmak ıstıyorum..

Sımdı yeterınce acık oldumu
HunTER hatta değil   Alıntı Yaparak Yanıtla
Eski 07/05/2003, 16:39   #6 (permalink)
...
 
HunTER Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 08/2002
Yer: İstanbul
Mesaj: 8,753
Varsayılan

Bu arada sanırım scrıptı bu foruma benzetmeye calıstıgımıda anlamıssınızdır
HunTER hatta değil   Alıntı Yaparak Yanıtla
Eski 07/05/2003, 16:40   #7 (permalink)
Gezgin
 
Sahin Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2002
Yer: Kuzey Kutbu
Mesaj: 8,336
Varsayılan

Benchmarking başarının temellerinden biridir
__________________
Merdi kıpti şecaat arz ederken sirkatin söyler!
Sahin hatta değil   Alıntı Yaparak Yanıtla
Eski 07/05/2003, 16:51   #8 (permalink)
Luke is back...
 
mkarabulut Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2002
Yer: ../Dark_Side
Mesaj: 2,443
Varsayılan

Yalnız bu forumda tam olarak bir normalizasyon uygulanmamış.. Veritabanı tabloları ekrandaki sayfalar gözönüne alınarak tasarlanmış..

Yani JOIN işlemi masraflı olduğundan olabildiğince tek tablodan sorguları halledebilmeyi hedeflemişler.

Mesela konuyu ekleyenin ID si değilde kullanıcı adı konu tablosuna yazılması gibi...

Herneyse, soruyu okuyayım belki yanıtlayabilirim..
__________________
Do or do not. There is no try.
mkarabulut hatta değil   Alıntı Yaparak Yanıtla
Eski 07/05/2003, 16:58   #9 (permalink)
Registered User
 
Üyelik Tarihi: 01/2003
Mesaj: 6,337
Varsayılan

Bir kere tasarim olarak hata var.

Ya haber ve yazi tablolarini birlestirip tel tablo yapmali ve yazi_tip diye bir alan eklemelisin (tip 0, haber demek; tip 1, yazi demek olacak)

ya da her ikisi icin de ayri birer yorum tablosu olmali. yazi_yorum ve haber_yorum diye...


Tasarimi degistirmek istemiyorum diyorsan, ilk mesajda yazdigim UNION isini goruyor.
acemi hatta değil   Alıntı Yaparak Yanıtla
Eski 07/05/2003, 17:57   #10 (permalink)
...
 
HunTER Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 08/2002
Yer: İstanbul
Mesaj: 8,753
Varsayılan

Aslında tasarım bıraz kod yapısınada baglı.. Yanı asıl amacım tum yorum fonksıyonlarını (yorum_listele, ekle, degıstır,sıl gıbı) bır dosyada (yorum.php) toplayarak her ıkı scrıpte (haber,php,yazı.php) ınclude ederek aynı seylerı tekrar tekrar yazmaktan kurtulmaktı...

Kı aslında bahsettıgın gıbı ılk yaptıgım tasarımda yazı,yorum,haber,forum hepsı tek bır tablo altındaydı.. Ama herbırının kendıne has alanları olucagı ıcın (haber_foto gıbı) bundan vazgecerek tabloları ayırmaya karar verdım..

Ardından yorumlarıda bır hedef alanına baglıyarak (hedef 0 ıse yazı, sıfırdan farklı ıse degere baglı yazının yorumu) haber ve yazı ıcın ayrı ayrı tutmayı dusundum ama buda basta dedıgım gıbı ek ıs cıkartıcaktı..

Kısacası ben su UNION 'ı kurcalayıp anlamaya calıssam ıyı olucak gıbı

Yardımlar ve tavsıyeler ıcın tesekkurler..
HunTER hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
sql sorgusu msk1977 PHP 1 11/04/2006 13:41
sql sorgusu msk1977 PHP 3 10/04/2006 12:00
SQL sorgusu... rccinar Veritabanları & SQL 5 19/05/2005 12:27
PHP Sorgusu zinnat PHP 8 08/12/2004 00:58
sql sorgusu... Hard`n`Dark Veritabanları & SQL 7 12/11/2002 18:23


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 00:09.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net