Извлечение из разных таблиц в PHP Oracle DB


У меня есть PHP-код для извлечения данных из нескольких таблиц, например:

SELECT RC.customer_id, RC.customer_number, RAA.address_id, RAA.customer_id FROM apps.RA_CUSTOMERS RC, apps.RA_ADDRESSES_ALL RAA WHERE RC.customer_number = 89

Однако, поскольку идентификатор customer_id находится в двух отдельных таблицах, как мне его получить? Для всего остального в цикле while() я могу просто сделать

while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
$row['CUSTOMER_NUMBER']; //this works!
$row['RC.CUSTOMER_ID']; //this does not ...
$row['CUSTOMER_ID']; //this works, but how do I know which table is this from?
}

Любая помощь очень признательна!

Author: Shiroi98, 2013-06-05

2 answers

Вы можете просто использовать ALIAS, как RC.customer_id AS cid и RAA.customer_id AS raa_cid.

SELECT RC.customer_id AS cid, RC.customer_number, RAA.address_id, RAA.customer_id AS raa_cid FROM apps.RA_CUSTOMERS RC, apps.RA_ADDRESSES_ALL RAA WHERE RC.customer_number = 8

Теперь игрушка может вызывать его с помощью

$row['cid']; //the one from RA_CUSTOMERS
$row['raa_cid']; //the one from RA_ADDRESSES_ALL

Как вы видите, разместив псевдоним, теперь вы вызываете их и печатаете, используя указанный псевдоним

 1
Author: Fabio, 2013-06-05 06:15:30

Прежде всего рассмотрите возможность использования синтаксиса JOIN.

Во-вторых, вы всегда можете явно указать псевдоним столбца.

SELECT RC.customer_id rc_customer_id 
       ... 
       RAA.customer_id raa_customer_id
       ...

Но в этом конкретном случае вам, вероятно, не нужны ни второй столбец, ни псевдоним. Если вы намеревались объединить эти две таблицы, они будут одинаковыми.

SELECT RC.customer_id, 
      ,RC.customer_number 
      ,RAA.address_id 
      -- you probably don't need this column ,RAA.customer_id 
  FROM apps.RA_CUSTOMERS RC JOIN apps.RA_ADDRESSES_ALL RAA 
    ON RC.customer_id = RAA.customer_id
 WHERE RC.customer_number = 89
 1
Author: peterm, 2013-06-05 06:25:14