Интересный много-много соединений sql

Просто добавьте высоту к вашему .column-header

.column-stack ul .column-header {
height:80px;
}

, и это будет правильно выровнено

https://jsfiddle.net/ot6qsu4w/20/ [ 115]

5
задан mwigdahl 24 March 2009 в 20:35
поделиться

5 ответов

Я думаю, что необходимо сделать другое соединение для получения макс. val ab для каждого a.id сначала.

Что-то вроде этого:

select a.*
from a
left join (
    select aid, max(val) as val 
    from ab 
    group by aid
) abmax on abmax.aid=a.id
inner join ab on ab.aid=abmax.aid and ab.val=abmax.val
inner join b on b.id=ab.bid
where b.val='foo'
2
ответ дан 15 December 2019 в 01:15
поделиться

Я часто использую следующий прием для получения самого большого на группу:

SELECT a.*
FROM ab AS ab1
  LEFT OUTER JOIN ab AS ab2 ON (ab1.aid = ab2.aid AND ab1.val < ab2.val)
  JOIN a ON (ab1.aid = a.id)
  JOIN b ON (ab1.bid = b.id)
WHERE ab2.aid IS NULL
  AND b.val = 'foo';

Прием должен соединить с таблицей AB к себе во внешнем объединении. Возвратите ab1, где никакие строки не существуют с тем же значением для помощи и большим значением для val. Поэтому ab1 имеет самый большой val на группу строк с данным значением для помощи.

1
ответ дан 15 December 2019 в 01:15
поделиться

Вот иначе, что я просто проверил:

select a.*
from ab
   inner join b on(ab.bid=b.id)
   inner join a on (ab.aid=a.id)
where ab.val = (select max(val) from ab AS ab2 where ab2.aid = ab.aid)
   and b.val='foo'
1
ответ дан 15 December 2019 в 01:15
поделиться
SELECT *
FROM
(
  SELECT
    A.*,
    (SELECT top 1 AB.BID FROM AB WHERE A.AID = AB.AID ORDER BY AB.val desc) as BID
  FROM A
) as Aplus
JOIN B ON Aplus.BID = B.BID
0
ответ дан 15 December 2019 в 01:15
поделиться

Я не уверен, какой sql Вы используете, но в MS SQL я создаю табличную функцию базы данных для возвращения макс. значений от таблицы A, затем соединяют это с таблицей B. Я нахожу это намного легче понять, чем сложные соединения, когда я оглядываюсь назад на свои запросы на более позднем этапе.

0
ответ дан 15 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: