Конференция "Базы" » Выборка из 2 таблиц [D6, DBISAM]
 
  • webpauk © (03.03.08 13:32) [0]
    есть 2 таблицы (T1, T2) одинаковой структуры:
    CREATE TABLE T... (ID INTEGER, Name CHAR(50))


    и есть таблица (T3), в которой есть указатель на одну из таблиц:
    CREATE TABLE T3 (ID INTEGER, NameTable CHAR(2), ID_T1T2 INTEGER)



    соответственно нужно получить T1(T2).ID, T1(T2).Name AS Name в зависимости от NameTable.

    запрос выглядит так:
    SELECT
    IF(T3.NameTable="T1" THEN T1.ID ELSE T2.ID) AS ID,
    IF(T3.NameTable="T1" THEN T1.Name ELSE T2.Name) AS NAME
    FROM T3, T2, T1
    WHERE
    (T3.ID_T1T2=T1.ID) AND (T3.ID_T1T2=T2.ID)



    проблема в том, что такой запрос выдает записи, связанные ВСЕ ко ВСЕМ.
    может кто подскажет как правильнее организовать запрос
  • Sergey13 © (03.03.08 13:36) [1]
    > [0] webpauk ©   (03.03.08 13:32)
    > в которой есть указатель на одну из таблиц

    В смысле? На кокую то конкретную таблицу или на любую из первых двух.

    Кстати, зачем 2 таблицы одинаковой структуры?
  • Johnmen © (03.03.08 15:03) [2]
    SELECT T1.ID AS ID, T1.Name AS NAME
    FROM T3, T1
    WHERE (T3.ID_T1T2=T1.ID) AND (T3.NameTable="T1")
    UNION
    SELECT T2.ID AS ID, T2.Name AS NAME
    FROM T3, T2
    WHERE (T3.ID_T1T2=T2.ID) AND (T3.NameTable="T2")

 
Конференция "Базы" » Выборка из 2 таблиц [D6, DBISAM]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]