Başka bir tablodaki dernekler dayalı MySQL veritabanı satırları seçin

0 Cevap php

PHP ve MySQL kullanıyorum.

Ben aşağıdaki alanları user_groups bir tablo var

id, userID, groupID

Bir kullanıcı birçok grup ile ilişkili olabilir, bu yüzden bu tablodan belirli bir kullanıcı kimliği seçtiyseniz o zaman ben Groupıd ait birkaç ile gelebilir

Ben aşağıdaki alanları group_messages başka bir tablo var

id, groupID, message

Ben Groupıd belirli bir kullanıcı kimliği ile ilişkili group_messages tablodan tüm iletileri, nasıl ben bu sorgu yazabilirsiniz seçmek istiyorsanız? Ben ilk userID belirli bir kimliği olduğunu user_groups tablodan Groupıd yıllardan tümünü seçin ve ardından Groupıd ben user_groups tablosundan seçmiş olduğu herhangi bir group_messages gelen tüm iletileri seçmek gerekir.

Bu nedenle, tarafından user_groups tablodan Groupıd yılların tüm seçebilirsiniz:

SELECT * FROM user_groups WHERE userID = '3'

Bu Groupıd adlı bir dizi dönecektir

Sonra Groupıd ben user_groups tablosundan yakaladı sayılar kümesi içinde group_messages tabloda yalnızca bu mesajları seçmeniz gerekir.

Bir sorgu ile bunu yapmanın bir yolu var mı? Belki ben user_groups tablosundan groupIDs bir dizi oluşturmak ve sonra dinamik bir foreach deyimi ile gibi sql sorgu oluşturmak düşündüm:

$sql = "SELECT * FROM group_messages WHERE (";

foreach ($groupID_array as $v){
  $sql .= "(groupID = '$v')or";   
}
$sql = rtrim($sql, 'or');

$sql .= ")";

Bu yöntem ile sorun bu kod çalıştırmak çok yavaş ve saati yapacak, hangi grupların binlerce kullanıcı ile ilişkili olabileceğini olmasıdır. Bir sorgu ile bunu yapmak için başka bir yolu var mı?

0 Cevap