2016-04-12 22 views
0

Veriler, "gönderiler" ve "yorumlar" olarak adlandırılan iki farklı tabloda saklanıyor. Şimdi iki mysqli_query kullanıyorum.Mysqli iki tablodan birini seçin

$q = mysqli_query($db,"SELECT * FROM posts WHERE username='$username'"); 
    $q = mysqli_query($db,"SELECT * FROM comments WHERE username='$username'"); 

Bunu yalnızca bir tane mysqli_query veya 3 tablo ile yapabilir miyim?

+1

Sadece JOIN' anahtar kelimesini mi arıyorsunuz? Ayrıca, orada sahip olduğunuz bir SQL püskürtme güvenlik açığı gibi görünüyor. – David

+1

Bize db şemasını ve beklenen sonucu göster. \t Lütfen [** Nasıl Yapılır **] 'ı okuyun (http://stackoverflow.com/help/how-to-ask) \t \t Burada [** START **] için harika bir yer var. http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/) Sorularınızın kalitenizi nasıl geliştirdiğini öğrenmek ve daha iyi cevaplar almak için. –

cevap

1

Sadece her iki tabloları katılabilirsiniz: Eğer kimlikleri kullanmadığınız gibi

$q = mysqli_query($db,"SELECT * FROM posts 
LEFT JOIN comments ON comments.username=posts.username 
WHERE comments.username='$username'"); 

Ancak görünüyor. Tablolar arasındaki ilişkiyi oluşturmak için kimlik otomatik artış alanları oluşturmanızı öneriyorum. Ne demek istediğimi anlamıyorsanız, bir öğreticiyi takip etmeye çalışın ve bir ya da ikide daha fazlasını öğrenecektiniz, sadece bir şeyi yapmaya çalışan kodlamaya atlayarak ve eğer olup olmadığını bilmeden nasıl çalıştıklarını anlamaya çalışarak doğru yapıyor.

+0

solda, aynı tablonun üzerinde '' nerede '' iç birleşimi olur, ancak burada birleştirme gerekli değildir, iç birleştirme bu durumda uygun birleşimdir. – mitkosoft

+0

@mitkosoft, katılımlar hakkında doğru. (Cevaplamak için oruç tuttum :) Paylaştığı bilgilerle, bunu yapmanın en iyi yolunu öneren çok şey yapamayız. Sadece bir sorgu ile yapıldığını göstermek istedim, ancak temel hedefim, DB tabloları, alanları ve ilişkileri iyi yapılandırılmamışsa, büyük sorgular oluşturmanın bir anlamı olmadığı için, DB'ler ve SQL hakkında biraz daha fazla bilgi edinmesini önermekti. – BeoWulf

İlgili konular