SORU
2 Mart 2010, Salı


Nasıl birden çok sütun üzerinde bir İÇ BİRLEŞİM yapmak

Üzerinde çalışıyorum bir ödev projesi ve yaşayacağım, bir veritabanı sorgusu gerçekleştirmek için hangi bulur uçuşlar ya da şehir adı veya havaalanı kodu, ama flights tablo içerir havaalanı kodları eğer öyleyse istiyorum arama yapmak için şehir için Facebook'a katıl üzerinde airports tablo.

Havaalanları tablo aşağıdaki sütunları: code, city
Uçuşlar tablo aşağıdaki sütunları: airline, flt_no, fairport, tairport, depart, arrive, fare
Sütun fairport tairport vardırdanveiçinhavaalanı kodları.
Sütunlar depart arrive kalkış ve varış tarihleri.

İlk fairport sütun uçuşlar ve airports.code sütunu birleştiren bir sorgu ile geldim. Sırada bana tairport maça bir önceki maçta katılın ilk gerçekleştirmek için var katılın.

SELECT airline, flt_no, fairport, tairport, depart, arrive, fare
    FROM (SELECT * FROM flights
        INNER JOIN airports
        ON flights.fairport = airports.code
        WHERE (airports.code = '?' OR airports.city='?')) AS matches
    INNER JOIN airports
    ON matches.tairport = airports.code
    WHERE (airports.code = '?' OR airports.city = '?')

Benim sorgu doğru sonuç verir ve ödev amacı için yeterli olacaktır, ama eğer 15 ** birden çok sütun miyim, merak ediyorum? Nasıl kalkış ve varış şehir/kodu eşleşmesi WHERE yan inşa miyim?

Aşağıda bir "pseudo-sorgu" ne istersem yapacağını, ama yapamam sözdizimi doğru ve bilmiyorum nasıl temsil airports tablo için gidiş ve hedefleri:

SELECT * FROM flights
INNER JOIN airports
ON flights.fairport = airports.code AND flights.tairport = airports.code
WHERE (airports.code = 'departureCode' OR airports.city= 'departureCity') 
    AND (airports.code = 'destinationCode' OR airports.city = 'destinationCity')

Güncelleme

Ben de this visual representation of SQL Join statements bulunduçokyararlı genel bir kılavuz olarak SQL deyimleri oluşturmak için nasıl!

CEVAP
2 Mart 2010, Salı


Birleştirilen tablolar alias aşağıdaki örnekte olduğu gibi: bir vererek aynı tablo ile birden fazla kez katılabilirsiniz

SELECT 
    airline, flt_no, fairport, tairport, depart, arrive, fare
FROM 
    flights
INNER JOIN 
    airports from_port ON (from_port.code = flights.fairport)
INNER JOIN
    airports to_port ON (to_port.code = flights.tairport)
WHERE 
    from_port.code = '?' OR to_port.code = '?' OR airports.city='?'

to_port from_port airports tablonun ilk ve ikinci kopya için takma ad olduğunu unutmayın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elliot Davin

    Elliot Davin

    28 Kasım 2008
  • Mr_BrettHooge

    Mr_BrettHoog

    3 Ocak 2011
  • TheDigiCraft

    TheDigiCraft

    25 NİSAN 2011