Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.
Aktivasyon mailiniz gelmediyse buraya tıklayın.
09, 2008, 12:42:10 am
42744 Mesaj 8090 Konu Gönderen: 17931 Üye
Son üye: medist
Turk-Php.Com Forum  |  Yardım Forumları  |  Genel Yardım  |  SQL'de anlamadığım bir yer var « önceki sonraki »
Sayfa: [1] Yazdır
Yazan Konu: SQL'de anlamadığım bir yer var  (Okunma Sayısı 279 defa)
beyaz_ölüm
PHP Öğrencisi
*
Offline Offline

Mesaj Sayısı: 92


Üyelik Bilgileri
SQL'de anlamadığım bir yer var
« : 28, 2008, 12:22:40 pm »

arkadaşlar çalıştığım kitapda şu örneği anlayamadım .

select customers.name from customers,orders,order_items,books where customers.customerid = orders.customerid and orders.orderid = order_items.orderid and order_items.isbn = books.isbn and books.title like '%Java%'

şimdi ben buradaki şartlı koşulları anlamadım arkadaşlar
mesela şu şartlıyı anlamadım

customers.customerid = orders.customerid

customers.customerid nedir ki? order_customerid ile karşılaştırma oluyor ve diğerleride öyle orderid ve isbn tablodaki bütün orderid ve customerid ile eşleştirme mi yapıyor?,ve SQL 'de öncelik hangi yerden onu söylerseniz sevinirim. teşekkürler.


Logged
bndrs
PHP Öğrencisi
*
Offline Offline

Mesaj Sayısı: 53



Üyelik Bilgileri WWW
Ynt: SQL'de anlamadığım bir yer var
« Yanıtla #1 : 28, 2008, 01:49:46 pm »

Selam,
noktadan önceki tablo ismi noktadan sonraki sütun ismi örn. customers.customerid = orders.customerid costumers tablosundaki costumerid sütünuyla orders tablosundaki costumerid eşit olmalı demek.

O örnek verdiğin sorguda dört tablodan sorgu çekilmiş ki hiç bir profosyonel böyle bir sorgu yapmaz tablolardan herhangi biri takribi 300 kayıt veya üzeri kayıt içerdimi kilitlenir kalır.

Kısacası FROM deyimi ile WHERE deyimi arasında virgülle ayrılmış olanlar seçilen tablo isimleri. SELECT ile FROM arasındakiler seçilen tablo sütunları

SELECT costumers.costumerid FROM costumers

costumers isimli tablodan costumerid sütununu getirir Eğerki bunu bir koşula bağlamak istersen WHERE eklersin diyelimki costumerid verisinin 3 veya 12'den büyük olması gerektiğini varsayalım o zaman

SELECT costumers.costumerid FROM costumers WHERE costumers.costumerid = 3 OR costumers.costumerid > 12

birden fazla sütun çekmek için aralarına virgül koyabilirsin tüm sütunlar için * işareti kullanılır

SELECT costumers.costumerid, costumers.title FROM costumers
veya tümü
SELECT costumers.* FROM costumers

birden fazla tablodan sorgu getirmek için FROM'dan sonra seçeceğin tabloyu yazıyorsun ya o da virgülle ayrılarak birden fazla tablo ismi yazarak çekebilir veya LEFT JOIN, INNER JOIN, RIGHT JOIN gibi SQL fonksiyonlarını kullanabilirsin

SELECT `costumers`.*, `orders`.`order_items` FROM `costumers`,`orders` WHERE `costumers`.`costumerid`=`orders`.`costumerid`

yukarıdaki sorgu şu işlemi yapıyor.
cotumers tablosundaki tüm sütunlar ile orders tablosundaki order_items alanlarını, costumer tablosundaki costumerid ve orders tablosundaki costumerid sütunu eşit olanları getir.

Not: Dikkat ettiysen tablo ismi veya sütun isimlerini ` işaretleri içinde kullandım bu doğru yöntemdir. Neden? çünkü düşünki bir tabloda order isimli bir sütunun var bu ` işaretini kullanmadığın zaman şak diye hata raporu döner order SQL fonksiyonu `order` olunca MySQL motoru bunu o zaman string olarak değerlendirir ve hata olmaz.
Logged

beyaz_ölüm
PHP Öğrencisi
*
Offline Offline

Mesaj Sayısı: 92


Üyelik Bilgileri
Ynt: SQL'de anlamadığım bir yer var
« Yanıtla #2 : 29, 2008, 04:26:22 am »

cevabın için teşekkürler yani benim asıl sormak istediğim hiç bir yerde değer vermeden direk koşul konuyor bu durumda ne oluyor olması idi cevabımı en sondaki cümlende aldım

yani anladığım kadarıyla

customers.customerid = orders.orderid bu ikisinden hangi sütünler eşleşiyorsa onların hepsini getir anlamı öylemi kısaca bumu oluyor , yani ben PHP'den direk SQL'e girdiim için PHP'de kullanırken bir değer veriyorsun ve ona göre şart koşuyorsun yani senin verdiğin değerle SQL'deki eşleşirse getir gibi ama burda farklı şeyler gördüğüm için kafam karıştı.
Logged
GaziMarşı
PHP Stajyeri
**
Offline Offline

Mesaj Sayısı: 447


Üyelik Bilgileri
Ynt: SQL'de anlamadığım bir yer var
« Yanıtla #3 : 30, 2008, 02:20:31 pm »

Selam.
customer.customerid ve orders.orderid'yi değişkenler gibi düşün...
Logged

Sayfa: [1] Yazdır 
« önceki sonraki »
Gitmek istediğiniz yer:  


Turk-Php.Com Forum | SMF Forum Software © 2005, Simple Machines LLC. All Rights Reserved.