MySQL SELECT 1 tablosundan sonuçları, ama başka bir masaya bağlı olarak sonuçları dışarıda?

2 Cevap php

Ben bir tablo 'mesajlar' dan sonuçlar olsun ama 'messages_view' olarak değere sahip satırları dışlamak istiyorsanız ne SQL sorgu kullanmak zorunda nerede alan messages.message = messages_view.id VE = 1 VE messages_view messages.deleted. user = $ somephpvariable

Daha rahip olmayan kimse açısından, her message bir 'id' yanı sıra 'mesajı' alanına bağlı bir messages_view tablo tarafından gösterilen bir mesajları tablo var. Belirli bir 'kullanıcı' (messages_view gelir) silinmez message satırları almak istiyorum. Mesajı silinir = 1 'silindi'.

Burada sadece dışarı değerleri alır benim şimdiki SQL Query:

SELECT * FROM messages WHERE ((m_to=$user_id) 
    OR (m_to=0 AND (m_to_state='' OR m_to_state='$state') 
    AND (m_to_city='' OR m_to_city='$city')))

İşte benim masa düzeni:

table: messages
----------------------------
id (INT) (auto increment)
m_from (INT)                     <-- Represents a user id (0 = site admin)
m_to (INT)                       <-- Represents a user id (0 = all users)
m_to_state (VARCHAR)
m_to_city (VARCHAR)

table: messages_view
----------------------------
message (INT)                    <-- Corresponds to messages.id above
user (INT)                       <-- Represents a user id
deleted (INT)                    <-- 1 = deleted

2 Cevap

Gerçekten bu kadar basit olduğunu düşünüyorum:

SELECT * FROM messages WHERE ((m_to=$user_id) 
    OR (m_to=0 AND (m_to_state='' OR m_to_state='$state') 
    AND (m_to_city='' OR m_to_city='$city')))
AND NOT EXISTS (
    SELECT *
    FROM messages_view
    WHERE messages.message = messages_view.id
        AND messages.deleted = 1 
        AND messages_view.user = $somephpvariable
)
Select ...
From Messages M
Where M.deleted = 0
    And Not Exists  (
                    Select 1
                    From Messages_View MV1
                    Where MV1.message = messages_view.Id
                        And MV1.user = $somephpvariable
                    )

Bir ilk paragraftan çelişki ve silinen bayrağı ile ilgili istediklerini olarak ikinci paragraf vardır.