sorgu içinde iki kez aynı tablodan veri çekmek
tablo1
sira - ekleyen_person_id - musteri_id - kitap
tablo 2 (müşterilerin ve personellerin birlikte tutulduğu tablo)
sira - adi - soyadi - tel - mail
------- Soru ----
ben ilk tablodaki ekleyen_person_id nin ve musteri_id'sinin bilgilerini tablo 2 den nasıl çekecebilirim.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (6)
Eğer tablo2'ye 2 kere sorgu atacaksan o zaman farklı şekillerde isimlendirip kullanman gerek. Çalışan bir örneğini paylaşıyorum.
SELECT tablo1.*, u1.adi as ekleyen_ad, u1.soyadi as ekleyen_soyad, u2.adi as musteri_ad, u2.soyadi as musteri_soyad FROM tablo1
INNER JOIN tablo2 u1 ON u1.id = tablo1.ekleyen_person_id
INNER JOIN tablo2 u2 ON u2.id = tablo1.musteri_id
ama şunu söyleyeyim, veritabanı yapın doğru değil ayrılmalıydın :)
Tekli veya sadece belirli şartı sağlayabilen için where inde kullanabilirsin aslında
SELECT FROM tablo_1 WHERE sutun_1 IN (SELECT FROM tablo_2 WHERE sutun_1=?,sutun_2=?,...)
gibi gibi..
teşekkürler cevaplarınız için
*Sağolasın Tayfun yeni bir şey öğrendim sorgu içerisinde tabloya kendimiz isim verebiliyormuşuz :)
*aynı tabloda yapmamın sebebi tüm kişi bilgilerini bir yerde toplayım diye düşünmemdi.
SELECT tablo1.*, tablo2.* FROM tablo1 INNER JOIN tablo2 ON tablo1.ekleyen_person_id = tablo2.sira
bu şekilde sorguyu çalıştırınca sadece personelin adı soyadı geliyor benim istediğim personelin ve müşterinin bilgilerine erişmek tek sorguda
tablo yapı ve içeriği
tablo1
sira(primery int) - ekleyen_person_id(int) - musteri_id(int) - kitap(text)
1 - 1 - 2 - html
2 - 1 - 3 - css
3 - 1 - 4 - php
tablo 2 (müşterilerin ve personellerin birlikte tutulduğu tablo)
sira(primery int) - adi(text) - soyadi(text) - tel(text) - mail(text)
1 - hasan - eryilmaz - 115545 - [email protected]
2 - mehmet - mehmet - 42342 - [email protected]
3 - ahmet - ahmet - 56345 - [email protected]
SELECT tablo1.*, tablo2.* FROM tablo1 INNER JOIN tablo2 ON tablo1.ekleyen_person_id = tablo2.sira
istediğin böyle bişey sanırım.