İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Web Programlama (PHP, ASP, HTML, CSS, JavaScript)
Web Programlama (PHP, ASP, HTML, CSS, JavaScript)

Sorgulama

PHPPHP02.08.201214 cevap2.433 görüntüleme
2012'den beri47 mesaj
#1
$sorgu = mysql_query("SELECT * FROM deneme where kullaniciadi = '$kullaniciadi'");

$sorgu = mysql_query("SELECT * FROM test where kullaniciadi = '$kullaniciadi'");
$row= mysql_num_rows($sorgu);
if ($row == 0){

deneme ve test tablolarında
iki ayrı tabloda sorgulamayı nasıl yaptırabilirim.
ikisini tek kodda birleştirip aynı anda sorgulama yapsın istiyorum
Nasıl birleştireceğimi gösterebilirmisiniz.

Ve buna ek olarak bir tablodaki verilerin hepsini diğer tabloya nasıl gönderebilirim hangi yolu izlemem gerekiyor
Cevaplar
2012'den beri250 mesaj
#2
Dönecek olan alanların sayısı ve tipi aynı ise:

$sorgu = mysql_query(
                        "SELECT * FROM deneme where kullaniciadi = '$kullaniciadi'" +
                        "UNION" +
                        "SELECT * FROM test where kullaniciadi = '$kullaniciadi'"
                    );
PHPPHP Konuyu açan
2012'den beri47 mesaj
#3
bu şekilde bir hata aldım
Parse error: syntax error, unexpected ')'

Şu şekilde açıklıyım.
2 Tablo isimleri haricinde aynı.

3. tablo farklı. kullaniciadi oradada var fakat 1 , 2 alan farklı
yukarıda vermiş oldugum gibi bir sorgu sağlıklı bir şekilde çalışıyordu sadece iki tablo veya 3 tablo yu aynı anda sorgulamak istediğimde yapmıyor bunu çözmek istiyorum
2012'den beri173 mesaj
#4
Selamlar,

1. Soru için JOIN işlemi yapabilirsin.

Örnek;

SELECT * FROM [COLOR=#333333]deneme[/COLOR]
INNER JOIN test
ON [COLOR=#333333]deneme[/COLOR].kullaniciadi[COLOR=#333333] [/COLOR]= test.kullaniciadi
WHERE [COLOR=#333333]deneme[/COLOR].kullaniciadi= 'isim'


Bu şekilde JOIN ile getirebilirsin.

2. Soru için bir tabloda bulunan bilgileri bir başka tabloya aktarmak istersen;

Eğer aktaracak olduğun tabloyu aktarma anında oluşturmak istiyorsan aşağıdaki sorguyu kullanacaksın.


SELECT * INTO HedefTablo from KaynakTablo


Burada HedefTablo kopyalama anında KaynakTablo' nun field özelliklerine göre otomatik olarak oluşacaktır.

Eğer var olan bir tabloya başka bir tablonun yine tüm alanlarını yada bazı alanlarını kopyalamak istersen aşağıdaki sql kodunu kullanabilirsin.


INSERT INTO HedefTablo (KullaniciAdi, Sifre)
SELECT KullaniciAdi, Sifre FROM KaynakTablo


Kolay gelsin.
2012'den beri250 mesaj
#5
PHPPHP dedi: ↑
bu şekilde bir hata aldım

Parse error: syntax error, unexpected ')'

Şu şekilde açıklıyım.
2 Tablo isimleri haricinde aynı.

3. tablo farklı. kullaniciadi oradada var fakat 1 , 2 alan farklı
yukarıda vermiş oldugum gibi bir sorgu sağlıklı bir şekilde çalışıyordu sadece iki tablo veya 3 tablo yu aynı anda sorgulamak istediğimde yapmıyor bunu çözmek istiyorum
Koda baktım da Parse error alman normal. UNION'ın başına ve sonuna boşluk koyabilir misin?
" UNION " şeklinde.

"UNION" ile üst ve alt queryler birleşince anlamsız hale geliyor. Boşluklar eklenince anlamlı hale gelecektir.

@hokumus

Bu bir JOIN işlemi değil.

A tablosundan 100
B tablosundan 200

kullanıcı gelebilir. Tablolardaki kullanıcılar, birbirlerinden tamamen farklı olabilirler. Bu durumda JOIN query 0 (sıfır) kayıt döndüdür.
2012'den beri173 mesaj
#6
Yukarıda ki örnekte iki farklı tabloda da aynı değişkeni kullanarak aynı alanı where ile sorgulamış.
Bende Join sorabileceğini düşünerek cevap verdim. Muhtemelen işinide görecektir.
PHPPHP Konuyu açan
2012'den beri47 mesaj
#7
<? include "config.php"; ?>

<?
$kullaniciadi = $_POST["kullaniciadi"];
$oda = $_POST["oda"];
$sev = $_POST["sev"];
$islem = "$kullaniciadi için ekleme islemi gerçekleştirildi";

$sorgu = mysql_query("SELECT * FROM deneme where kullaniciadi = '$kullaniciadi'");

$sorgu = mysql_query("SELECT * FROM test where kullaniciadi = '$kullaniciadi'");
$row= mysql_num_rows($sorgu);
if ($row == 0){

$ekle = mysql_query("INSERT into deneme (kullaniciadi, ekleyen, oda, sev) VALUES ('$kullaniciadi', '$yazi', '$oda', '$sev')");
$ekle = mysql_query("INSERT into test (kullaniciadi, ekleyen, oda, sev) VALUES ('$kullaniciadi', '$yazi', '$oda', '$sev')");
$bilgi = mysql_query("INSERT into bilgi (kullanici, islem, tarih) VALUES ('$yazi', '$islem', '$tarih-$saat')");

if ($ekle and $bilgi){
echo "<center> $kullaniciadi başarı ile eklendi.</center>";
}else{
echo "<center>hata. tekrar deneyin</center>";
}
}else{
echo "<center>$kullaniciadi zaten ekli.</center>";
}
?>

Detaylı olarak açıklamak gerekirsek sorun şu.
Örneğin
$sorgu = mysql_query("SELECT * FROM deneme where kullaniciadi = '$kullaniciadi'");

$sorgu = mysql_query("SELECT * FROM test where kullaniciadi = '$kullaniciadi'");
$row= mysql_num_rows($sorgu);
if ($row == 0){

Bu işleme göre benim aldıgım sonuc şu.
test tablosunda eğer o bilgi var ise.
kod içerisinde ekle dediğim hiç bir yere eklemiyor.
oraya deneme yazarsam, deneme tablosu içinde var ise, diğer yerlere eklemiyor.
Benim yapmak istediğim şey bunu çoğaltmak.
Yani örneğin bir farklı tabloyu ele alalım.
Liste tablosunda olan bir nick eklenemesin tabloya desem.
test'i silip Liste yazmam gerekiyor ki bunu başarayım.
test'in yanına Liste 'i koyabilmeyi soruyorum. zaten ekli yanıtını verecek böylece bana.
yani tablolar farklı dahi olsa kullaniciadı hemen hemen her tabloda mevcut.
x tablosunda kullaniciadı varsa test ve deneme tablosuna eklemesin gibisinden bir soru soruyorum umarım acıklayıcı olabilmişimdir
teşekkür ederim
2012'den beri250 mesaj
#8
hokumus dedi: ↑
Yukarıda ki örnekte iki farklı tabloda da aynı değişkeni kullanarak aynı alanı where ile sorgulamış.
Bende Join sorabileceğini düşünerek cevap verdim. Muhtemelen işinide görecektir.
Kararsızım.
INNER JOIN olmaz. Bundan eminim.
Bu sorunu tesadüfen çözebilir ama aşağıda açıklayacağım ihtimalde problem yaratır.
UNION daha uygun görünüyor bana.
LEFT veya RIGHT JOIN (duruma göre) ise en doğru çözüm olabilir.

Neden INNER JOIN olmaz?

A tablomuz:
user1, pass | user2, pass | user3, pass

olsun.

B tablomuz:
user8, pass | user9, pass

olsun.

user1 sorgulanmak istensin.

A tablosu user1 içerirken B tablosu user1 içermediği için (INNER JOIN şartını karşılamadığı için) sonuç dönmez.
2012'den beri173 mesaj
#9
Arkadaşım,

Ben aynı koşula bağlı veriyi getireceğini düşünerek inner join dedim. Ama kriterin bir tarafı null yada <> durumunda left yada right kullanılabilir. Inner join benim soruyu anladığım ve cevap verdiğim ilk şeklidir. Duruma göre değiştirilebilir.

Bu arada senin verdiğin cevabı baltalamak için bu cevabı vermedim. Netice itibari ile bilgi paylaşımında bulunuyoruz.
2012'den beri250 mesaj
#10
E durum değişti şimdi...
Detaylı olarak açıklamak gerekirsek sorun şu.
Örneğin
$sorgu = mysql_query("SELECT * FROM deneme where kullaniciadi = '$kullaniciadi'");

$sorgu = mysql_query("SELECT * FROM test where kullaniciadi = '$kullaniciadi'");
$row= mysql_num_rows($sorgu);
if ($row == 0){
Burada şöyle bir hata ya da eksiklik var:

$sorgu=...

ile sorguyu çalıştırıyorsun ama hiçbir işlem yapmadan

$sorgu=...

ile sorguyu tekrar çalıştırıyorsun ve işleme ikinci sorguya göre devam ediyorsun. Sanki, ikisi arasında bir şeyler çalıştırman gerekiyor hissine kapıldım (PHP programcısı değilim).

Sanki ilk sorgudan sonra (iki $sorgu=... arasına yani):

if ($row == 0)
{
$ekle = mysql_query("INSERT into deneme (kullaniciadi, ekleyen, oda, sev) VALUES ('$kullaniciadi', '$yazi', '$oda', '$sev')");
 $ekle = mysql_query("INSERT into test (kullaniciadi, ekleyen, oda, sev) VALUES ('$kullaniciadi', '$yazi', '$oda', '$sev')");
 $bilgi = mysql_query("INSERT into bilgi (kullanici, islem, tarih) VALUES ('$yazi', '$islem', '$tarih-$saat')");

 if ($ekle and $bilgi)
{
     echo "<center> $kullaniciadi başarı ile eklendi.</center>";
 }
else
{
     echo "<center>hata. tekrar deneyin</center>";
 }
 }


eklenmeli gibi göründü. Tabi tablo ismini filan değiştirerek.
Fikir verdi mi bilemiyorum. Vermediyse bir PHP programcısı çok rahat çözer bu problemi.
2012'den beri173 mesaj
#11
Valla bende php programcısı değilim. Sadece sql cümlesinde yardımcı olmaya çalıştım.
PHPPHP Konuyu açan
2012'den beri47 mesaj
#12
genel olarak yapmak istediğim şey o işte problem yaaşdıgım kısım

$sorgu = mysql_query("SELECT * FROM test where kullaniciadi = '$kullaniciadi'");
$row= mysql_num_rows($sorgu);
if ($row == 0){
Şu bölümde sorgulanan test 'in coğaltılması test ve denemeyi beraeber sorgulamak gibi.
elseden dönen sonuclarda buna göre olmalı ki hiç problemim kalmasın

2011'den beri597 mesaj
#13
yanlız şu kontrol deyimlerinde değişkenleri direk kullanmaktan vazgeç, o zaman içeriklerine erişmeye çalışıyosun ve geçerliliğini denetlerken, php hatayı ekrana basar, eğer ulaşmaya çalıştığın değişken yoksa.

onun dışında bence herkez gereği kadar açıklamış, takıldığın başka kısımlar olursa, söz dizim, eş değer ifadeler ve daha okunabilir ve optimize kod yazımı hakkında, sevee seve yardımcı olurum. :D
PHPPHP Konuyu açan
2012'den beri47 mesaj
#14
Yapamadım ki.
$sorgu = mysql_query("SELECT * FROM deneme INNER JOIN test ON deneme.kullaniciadi= test.kullaniciadi where deneme.kullaniciadi = '$kullaniciadi'");

olarak denedim.

$sorgu = mysql_query("SELECT * FROM deneme where kullaniciadi = '$kullaniciadi'" + " UNION " + "SELECT * FROM test where kullaniciadi = '$kullaniciadi'");

olarak denedim.
Sonuc olarak yapmak istediğim iki sorgu aynı anda calışmıyor. arkadaşlara sonsuz teşekkür ederim vakit ayırdılar bilmediğim bir çok şeyi öğretmiş oldular fakat ben istediğime ulaşamadım.
2011'den beri597 mesaj
#15
PHPPHP dedi: ↑
Yapamadım ki.
$sorgu = mysql_query("SELECT * FROM deneme INNER JOIN test ON deneme.kullaniciadi= test.kullaniciadi where deneme.kullaniciadi = '$kullaniciadi'");

olarak denedim.

$sorgu = mysql_query("SELECT * FROM deneme where kullaniciadi = '$kullaniciadi'" + " UNION " + "SELECT * FROM test where kullaniciadi = '$kullaniciadi'");

olarak denedim.
Sonuc olarak yapmak istediğim iki sorgu aynı anda calışmıyor. arkadaşlara sonsuz teşekkür ederim vakit ayırdılar bilmediğim bir çok şeyi öğretmiş oldular fakat ben istediğime ulaşamadım.
ya mysql sorgularına daha gelmedim, bende kendimi geliştiriyorum php konusunda üstadlar kadar değilim ama...

$sorgu = mysql_query("SELECT * FROM deneme where kullaniciadi = '$kullaniciadi' UNION SELECT * FROM test where kullaniciadi = '$kullaniciadi'");

bunu bi dene bakalım...

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.