Я полностью самоучка, поэтому в моих знаниях есть очевидные пробелы. Когда мне нужно было получить данные из более чем одной таблицы, я научился делать объединения. Например, если мне нужен номер ваучера, номер счета и баланс из таблицы ваучеров и соответствующий адрес из другой таблицы, я бы сделал это:
select v.voucherNbr, v.balanceInit, v.acctID, a.address, a.city from vouchers v
left join addresses a on v.acctID = a.id
, который будет возвращать все записи ваучеров и любые адреса, которые существуют (в этом случае мы хотим вернуть записи ваучеров, даже если нет соответствующего адреса, следовательно, левое соединение.)
Я недавно унаследовал некоторый код, который, кажется, пытается получить те же данные (и в этом случае он возвращает правильные записи), который делает это так:
select v.voucherNbr, v.balanceInit, v.acctID, a.address, a.city from vouchers v, addresses a
where v.acctID = a.id
Может ли кто-нибудь объяснить мне последствия этого вместо использования соединения. Как я уже сказал, в данном конкретном случае он возвращает те же данные, что и соединение, но всегда ли это будет?