mysql bir tabloda olup diğer tabloda olmayan kayıtlar

Rapor et
Soru

Bu soru rapor edilmelidir hissediyorum neden kısaca açıklayınız.

Rapor et
İptal

merhaba arkadaşlar,

uye tablosu şöyle olsun

uye_id – k_adi

1               ahmet

2              mehmet

3              hasan

4              hüseyin

5              erdem

engel tablosu şöyle olsun

engel_id – engelleyen_id – engellenen_id

1                           1                            2

2                           1                            4

şimdi ben üyeler tablosundan id si 1 olan üyenin  kendisi de hariç olacak şekilde engellemediği üyeleri çekmek istiyorum.

yani 3 ve 5 id li üyeleri çekmek istiyorum.

bazı sorgular denedim ama başaramadım. teşekkürler…

Cevaplandı 0
Diğer 4 sene 9 Cevap 2228 görüntüleme Intern 0

Yazar HakkındaIntern

Cevaplar ( 9 )

  1. Avatar

    Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

    Rapor et
    İptal

    Select * from uye where uye_id not in (select engellenen_id from engel where engelleyen_id = 1) and uye_id 1

    sorguyu deneyebilir misin?

    En iyi cevap
    • Avatar

      Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

      Rapor et
      İptal

      hocam çok teşekkür ederim. bu sorgu çalıştı. bunu ‘not in’ kullanmadan yapabilir miyiz? olmazsa bunu kullanıcam. tekrar teşekkürler..

      • Avatar

        Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

        Rapor et
        İptal

        daha doğrusu şöyle sorayım engel tablosundaki ikinci satır engelleyen_id = 4 ve engellenen_id = 1 olsaydı ve onu da sorgunun dışında bırakmak isteseydim sorguyu nasıl değiştirmem gerekirdi?

        • Avatar

          Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

          Rapor et
          İptal

          zaten eğer öyle olsaydı o da listelenmezdin çünkü engel tablosunda engelleyen_id=1 olanları seçiyoruz sadece.

          • Avatar

            Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

            Rapor et
            İptal

            çok teşekkürler hocam. istediğimi buldum, şu şekilde :

            select * from uye where uye_id not in(select if(engelleyen_id = 1, engellenen_id, engelleyen_id) as id from engel where engelleyen_id = 1 or engellenen_id = 1) and uye_id 1;

            belki birilerinin işine yarar.

  2. Avatar

    Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

    Rapor et
    İptal

    select * from uye where uye_id not in(select if(engelleyen_id = 1, engellenen_id, engelleyen_id) as id from engel where engelleyen_id = 1 or engellenen_id = 1) and uye_id 1;

  3. Avatar

    Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

    Rapor et
    İptal

    select * from uye where uye_id not in(select if(engelleyen_id = 1, engellenen_id, engelleyen_id) as id from engel where engelleyen_id = 1 or engellenen_id = 1) and uye_id != 1;

    • burhanaksendir

      Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

      Rapor et
      İptal

      Bu sorgu ilerde tablolarıb şiştikçe çok cidddi yavaş çalışabilir ve performans kaybın olabilir. Eğer shared bir hosting kullanıyorsan. Ama sunucun iyiyse sorun yok

  4. Avatar

    Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

    Rapor et
    İptal

    performans açısından daha iyi bir seçenek biliyorsanız lütfen paylaşın.

Cevap bırak

Gözat

KOD PAYLAŞIRKEN DİKKAT!!!!

HTML kod paylaşmak için

<pre class="html">HTML KOD</pre>
XML kod paylaşmak için
<pre class="xml">XML KOD</pre>
Diğer dillerde(php,java,android,javasvript,c# vs..) kod paylaşmak için
<pre>KOD</pre>
tagları arasında paylaşmayı unutmayın.