2016-08-14 11 views
0

で一致した行私は、データベース内の2つのテーブルを持っているに一致するすべての行を取得MySQLが参加:通知タイプがゼロ

1.mir_notifications (ID(PK)、タイトル、メッセージ、notifcaton_type)

2.mir_users_notifications (ID、USER_ID、notif_id(FK))

notif_id

mir_notification表にidを意味私はすべてfecthしますmir_users_notifcations表にUSER_IDに一致し、notifcation_typeを持っているすべての行と一緒にmir_notificationsテーブル内notification_type0

あるmir_notificationテーブルから行(notifcationタイプがゼロの場合、すなわちそれは、すべてのユーザーのためにフェッチされます)

ここクエリ私は通知タイプ0と1とユーザーIDである2を渡しています。ここ

SELECT mir_notifications.* FROM mir_notifications LEFT JOIN mir_users_notification ON mir_notifications.id=mir_users_notification.notif_id WHERE mir_notifications.notfication_type IN (0,2) AND mir_users_notification.user_id=2 

を使用していますが、現在、このユーザーは特別な通知を持っていないが、彼 mir_notification notification_typeと一致するテーブルは0ですが空の結果を返します

+0

することは、私の実際のニーズをunderstndingため:) 1 BRO望ましい結果と一緒に、CREATEとINSERT文の適切 – Strawberry

答えて

1

WHERE句を変更するだけで簡単に変更できます。以下のクエリは、ユーザ2のタイプ2のすべての通知と、タイプ0のすべての通知を取得します。

SELECT mir_notifications.* FROM mir_notifications LEFT JOIN mir_users_notification ON mir_notifications.id=mir_users_notification.notif_id WHERE (mir_notifications.notfication_type = 2 AND mir_users_notification.user_id=2) OR (mir_notifications.notification_type = 0)

+0

その働いたおかげで提供することを検討します –

関連する問題