Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

mysql yardim


ucunbiri

Öne çıkan mesajlar

simdi sorumu sormadan once tablolarim hakkinda bilgilendireyim sizi;
depolar tablosu [depono,depoad,adres,telno]
urunler tablosu [NO,AD,URETICI,FIYAT]
depohasurun tablosu [depono,NO,miktar]

mesela urunler tablomda 3 tane urun var tablom da su sekilde olsun;
1 aspirin bayer 15.20
2 apranax asdff 12.10
3 surup ggzcx 3.40

depolar tablomda da 2 depo olsun;
1 adeposu izmir 123345
2 bdeposu bursa 287123

depohasurun tablomda su sekilde olacak;
1 1 10
1 2 15
1 3 5
2 1 7
2 2 12
2 3 20

yani depohasurun tablosunda ilk kolon depoyu, 2. kolon da urunu gostercek, her depo icin tum ilaclari listelemek istiyorum.
ben ornek tablolarimi olustururken bu degerleri kendim girdim yapmaya calistigim sey ise uygulamamdaki admin yeni bir depo girdiginde depohasurun tablomun guncellenmesi yani mesela 3 numarali yeni bir depo girdiginde tablom suna donusmeli;
1 1 10
1 2 15
1 3 5
2 1 7
2 2 12
2 3 20
3 1 0
3 2 0
3 3 0

bunun sorgusunu nasil yazabilirim ? ya da boyle bir sey yazmak mumkun mu herseyden evvel ?
Link to comment
Sosyal ağlarda paylaş

Eger her urun yeni girilen depoda olsun, diyorsan, trigger kullanarak yapman gerekiyor. Bunun icin google'da "mysql trigger" diye arat. Ancak oraya 0 diye yazdirmak pek mantikli degil.

Onun yerine urun miktari arttirildigi zaman tabloda yoksa yeni kayit, varsa sayiyi artirman cok daha anlamli olur. Aksi halde tablo, gerek olmadigi halde cok buyuk boyutlara cikar.

Tavsiye: depohasurun gibi bir tablo ismindense, depo_urun_rltn ya da depo_urun_iliski diye tablo ismini koyarsan, depo ve urun tablolarinin arasindaki iliskinin bulundugu tablo diye bir cikarim yapmak mumkun olur tablo isminden. Tabi obur taraftan senin bu tablon, urun-depo iliskisini degil, urun miktarini gosteriyor. depo_urun_miktari diye bir isim koyarsan cok daha anlamli olur.
Link to comment
Sosyal ağlarda paylaş

SELECT depolar.depono, depolar.depoad, depohasurun.NO, depohasurun.miktar, sepet.KULLANICI_NO, sepet.URUN_NO, sepet.MIKTAR
FROM depolar, depohasurun, sepet
WHERE sepet.KULLANICI_NO = 3 AND depolar.depono = depohasurun.depono AND sepet.URUN_NO = depohasurun.NO AND depohasurun.miktar >= sepet.miktar
GROUP BY depolar.depono
HAVING COUNT(depolar.depono) = SELECT COUNT(URUN_NO) FROM sepet WHERE sepet.KULLANICI_NO = 3;


seklinde bir sorgu yazmam gerekiyor, illa ki cok daha mantikli bir halde yazilabiliyordur bu ama bana alti cizili kismi nasil calistirabilecegim lazim yani having den sonra bu tarz bir fonksiyonu nasil yazabilirim, nette bakindim ama hep basit basit ornekler var cikamadim isin icinden.
Link to comment
Sosyal ağlarda paylaş

yapmak istedigim sey bir alicinin olusturdugu sepetin envanterini karsilayabilecek stoga sahip depolari listelemek,

sepet tablom su sekilde
[NO,KULLANICI_NO,URUN_NO,MIKTAR]
girdisi de soyle mesela
5 3 10 100
6 3 13 200
7 3 11 150
yani 3 numarali kullanici 100 tane 10 numarali urun, 200 tane 13 numarali urun 150 tane 11 numarali urun siparis etmis

depolar tablomda soyle
[depono,depoad,...]
icerigi su sekilde
1 adeposu ...
2 bdeposu ...
3 cdeposu ...

depohasurun tablom ise soyle
[depono,NO,miktar]
icerigi
1 10 100
1 11 100
1 13 100
...
2 10 150
2 11 150
2 13 200
...
3 10 200
3 11 200
3 13 200
...

yani sorgu bu seneryado 2 ve 3 numarali depolari dondurmeli sepet tablosunda baska kullanicilarin sepetleri de mevcut dogal olarak ayni KULLANICI_NO lara gore urunleri depohasurun tablosundan kontrol etmem lazim toplamda 4 depo ve her depo icin ayni 16 ilac var depohasurun tablosunda

sorgum baya bi sacma farkindayim ama havingin sol tarafi ve sag tarafi ayri ayri calisinca istedigim sonucu veriyo :]
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...