Bir sorunum var. Bir "kullanıcılar" tablosunda "şirketler" tablosuna katılmak istiyorum. Mesele şu ki, bir kullanıcı ya bir şirketin yazarı/yaratıcısı olabilir ya da üye olabilir.Koşullu JOIN sorunu, bir alan boşsa
Bu, bir alan users.company alanından birinin boş olduğu anlamına gelir, ancak company.authorID alanı kullanıcı kimliği ile doldurulur veya İkinci durum, users.company şirket kimliği ile doldurulur ve companies.authorID boştur.
Şirketler tablosuna nasıl kullanıcılar tablosuna katılabilirim?
Katılmak maddesi içinde istediğinizi elde etmek için herhangi bir yolu var mı
LEFT JOIN companies ON companies.id = users.company AND IF users.company = '0' THEN ON companies.authorID = users.id
gibi sth olmalı mı?
Çok teşekkürler! tam maddesi ile
Geçerli durum Bu çözüm ancak def çalışıyor
SELECT
count(users.id),
companies.city AS selectVariable
FROM users
LEFT JOIN companies ON companies.id = users.company OR (users.company = '0' AND companies.authorID = users.id)
WHERE users.email <> '' AND users.deleted = '0'
GROUP BY companies.city
ORDER BY count(users.id) DESC
LIMIT 20 OFFSET 0
(sorgu çöküyor). Ancak ... olmak istiyorum
SELECT
count(users.id),
(
CASE
WHEN users.company = '0' THEN c2.city
WHEN users.company > '0' THEN c.city
ELSE NULL
END) AS selectVariable
FROM users
LEFT JOIN companies c ON c.id = users.company
LEFT JOIN companies c2 ON c2.authorID = users.id
WHERE users.email <> '' AND users.deleted = '0'
GROUP BY selectVariable
ORDER BY count(users.id) DESC
LIMIT 20 OFFSET 0
bir şirket ile ilişkili olmayan kullanıcıları saymak istiyor musunuz hiç? Bir kullanıcı, bir içerik oluşturucu/sahip olmanın yanında üye olabilir (aynı şirket olmak zorunda değildir). –
Sadece basit bir işlem sırası değil mi? OR deyiminin yalnızca ikinci yarısında parantezleriniz var. İlk yarıyı da bağlarsan ne olur? JOIN Table ON (koşul1) VEYA (koşul2) –
@MaxxaM hey, şimdi parantez şeyi deneyeceğim. Her kullanıcıya bir şehir almak istiyorum. ama şehir şirketin bir parçası. – jQuery