Bir tablo notifications
denilen vardır:sütun değerine bağlı olarak farklı tabloyu birleştirmek
notification
farklı bir tablo ile ilgilidir
CREATE TABLE `notifications` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL,
`type` varchar(20) NOT NULL DEFAULT '',
`parent_id` int(11) DEFAULT NULL,
`parent_type` varchar(15) DEFAULT NULL,
`type_id` int(11) DEFAULT NULL,
`etc` NULL
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;
, parent_type
alanının değeri ben * join
istediğiniz tablonun adını belirtir ile tablo.
SELECT n.id,
FROM notifications n
LEFT JOIN books b ON n.parent_id = b.id AND n.parent_type = 'book' AND b.is_visible = 1
LEFT JOIN interviews i ON n.parent_id = i.id AND n.parent_type = 'interview' AND i.is_visible = 1
LEFT JOIN other tables...
WHERE n.user_id = 1
GROUP BY n.id
Ama başlangıcı: Şu anda hedef tablodaki bunlarla ilgili satır var ve bunların is_visible
alan 1
olduğunu notifcations seçilmesi için bu sorguyu kullanıyorum
CREATE TABLE `tablename` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`is_visible` tinyint(1) NOT NULL,
`etc` NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
: Tüm hedef tabloları birkaç benzer sütuna sahip Bir LEFT JOIN
, herhangi bir tabloyla eşleşiyorsa, bildirimi döndürür, nasıl yeniden yazabilirim, böylece hedef tablodaki herhangi bir satırla eşleşmeyen bildirimleri döndürmez? CASE
ifadesini de denedim.
Sadece "SOL" ve "JOIN" kullanmadan denediniz mi? –
Aşırı derecede titiz bir soru (Ben diğer oyların da olduğunu varsayalım) ve çok kullanışlı bir başlık üzerinde çömelme için aşağı oy. Başlığı yeniden adlandırın ve oylamayı kaldırırım. A'yı A'nın bir kopyası olarak işaretlemek için koşan çok fazla nub var ve bu sadece daha da kötüleştiren bir saçmalık. – John
@John "korkunç kıvrımlı soru"? Soru bana iyi görünüyor. Genelde "downvotes" umurumda değil, ama yararlı sorular ve yapıcı öneriler sormayı umuyorum. Muhtemelen, başlığın kendi sorusu gibi çok genel olduğunu söylemelisiniz. ["Sütun değerine göre farklı veritabanlarından MariaDB JOIN tabloları"?) (Https://stackoverflow.com/questions/48062280/mariadb-join-tables-from-different-databases-based-on-column-value) :) – undefined