2 tablolar aynı sütun var MYSQL Max (kolon)

0 Cevap php

Şöyle Benim Masalarız:

books:
id | abbr | volume | name | 
1  |  GZ  | SLZT   | Gazo |
...  
vol1:
id | book | chapter | line
1  |  GZ  |   1     | "text..."
...
vol2:
id | book | chapter | line
1  |  SD  |   1     | "more..."
...

(Tablo bu örnekte ben sadece Vol1 eşleştirme göstermek, vol1.book = books.abbr de hizalamak.)

Yani, hacim 1 için bir kitapta son bölümünü bulmak kolaydır. Ben bunu:

SELECT MAX(chapter) FROM vol1, books WHERE vol1.book=books.abbr 
AND books.volume='SLZT' AND books.name ='Gazo';

hangi çalışıyor. ANCAK, ne ben aynı sorguda içine vol2 her şeyi dahil etmek istedi?

Ben denedim:

Select Max(chapter) FROM vol1,vol2,books
WHERE (vol1.book=books.abbr OR vl2.book=books.abbr)
AND books.volume='SLZT' AND books.name = 'Gazo';

Tabii ki bana iki kez kullanıldığı gibi bölüm belirsiz olduğunu söylüyor bir hata verir.

Ayrıca, ben değerlerin SLZT 'yapacak ve gerçek kod örnek değişkenleri' Gazo '.

Yani, aslında, ben ne olursa olsun VOL1 veya vol2 içinde olup olmadığı, herhangi bir kitap / hacim yazın ve yüksek bölümün değerini bulmak mümkün olmak istiyorum.

umarım gerekli tüm bilgileri sağlamak için yeterince soru hazırlanmış ettik. Ve teşekkürler!

Edit::

Birisi aşağıdaki çözümü yayınlanmıştır ve yakın - strange şey o cevaplardan kayboldu olmasıdır! Onlar kullanılmasını önerdi UNION:

SELECT MAX(chapter) FROM vol1
JOIN books ON vol1.book = books.abbr
WHERE books.volume = 'SLZT' AND books.name = 'Gazo'
UNION
SELECT MAX(chapter) FROM vol2
JOIN books ON vol2.book = books.abbr
WHERE books.volume = 'SLZT' AND books.name = 'Gazo'

Bu (örneğin) bana verir:

MAX(chapter)
50
NULL

Ama nasıl bu tablonun (null olmayan bir değer yani) sadece 50 değerini geri alabilirim?

0 Cevap