Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    mysql_fetch_array...tabelle diverse con nome dei campi uguali

    Ciao a tutti,
    volevo chiedervi una cosa su mysql_fetch_array().
    Ho le tabelle sono capacita_cliente con campi (Cliente,Decorrenza,Capacita)
    e volume_cliente con campi(Cliente,Volume,Decorrenza)
    se io volessi fare la seguete query:

    $query = SELECT * FROM capacita_cliente JOIN volume_cliente.....
    $res = mysql_query(query)
    $row = mysql_fetch_array($res)

    come faccio a recuperare le due differenti row[Decorrenza] riferite ai dati delle due tabelle?
    Grazieee
    ciaooo

  2. #2
    ehm, è una questione di Query più che di PHP (a meno che non usi MYSQL_NUM come secondo parametro)

    Se usi nomi uguali nelle due tabelle allora devi trattare i nomi dei campi con AS o indicando la tabella prima:

    Metti di avere
    codice:
    CREATE TABLE persona(
      nome VARCHAR(50),
      cognome VARCHAR(50)
      luogo VARCHAR(50)
    );
    
    CREATE TABLE luogo(
      nome VARCHAR(50),
      stato VARCHAR(50)
    );
    Idealmente una persona si trova in un luogo, quindi il campo luogo e un FK su nome della tabella luogo

    Se fai

    codice:
    SELECT nome, cognome, luogo, nome, stato FROM persona INNER JOIN luogo on persona.luogo = luogo.nome;
    Otterrai un bell'errore, dato che Msql non sa come interpretare i nomi che si ripetono. Usando * non hai questo problema perché MySQL si occupa di tenere traccia delle tabelle nei recordset, tuttavia quando estrai i dati in un array associativo parte tutto.

    La cosa migliore sarebbe specificare le tabelle ai campi e/o usare AS per riscriverli:

    codice:
    SELECT p1.nome AS nomepersona, p1.cognome AS cognomepersona, p1.luogo AS luogopersona, l1.nome AS nomeluogo, l1.stato AS statoluogo FROM persona AS p1 INNER JOIN luogo AS l1 on p1.luogo = l1.nome;
    A questo punto nel tuo array da mysql_fetch_array(), otterrai:

    array(
    [nomepersona] => 'Pippo',
    [cognomepersona] => 'De Pippis',
    [luogopersona] => 'Topolinia',
    [nomeluogo] => 'Topolinia',
    [statoluogo] => 'USA'
    );

    Spero di averti dato un'idea. L'alternativa è, come dicevo, usare il fetch con MYSQL_NUM, dove l'array non viene mappato con nomi, ma solo con numeri, la difficoltà sta nel fatto che devi controllare l'ordine in cui escono i dati.
    I DON'T Double Click!

  3. #3
    grazie mille...
    ...direi che mi hai dato una spiegazione più che esauriente!!!
    grazie ancora
    ciaooo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.