Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    84

    PHP- MySql - Recuperare un dato da una seconda tabella con una sola query

    Buongiorno,


    in MySQL ho una tabella "tbl_operatori" che ha questi campi: "operatore_id" ed "operatore_nome".


    Poi ho un'altra tabella dove memorizzo le ferie di ogni operatore "tbl_ferie" che ha questi campi: "ferie_id", "ferie_operatore_id" e "ferie_periodo".


    Ovviamente "ferie_operatore_id" è lo stesso di "operatore_id".


    Ora, devo fare un SELECT su "tbl_ferie" ma vorrei recuperare direttamente, oltre all'id dell'operatore, anche il suo nome. Vorrei capire quale è la strada più semplice per fare questa cosa, senza dilungarmi nel codice.


    Attualmente sulla tabella "tbl_ferie" utilizzo questo codice:


    codice:
    $stmt_edit = $connection->prepare("SELECT * FROM tbl_ferie WHERE ferie_id = '".$ferie_id."'");
        $stmt_edit->execute(array(':ferie_id' => $ferie_id));
        $data_edit = $stmt_edit->fetch(PDO::FETCH_ASSOC);
    
    
        $operatore_id = $data_edit['ferie_operatore_id'];
        $periodo = $data_edit['ferie_periodo'];
    A questo punto dovrei effettuare un'altra query su "tbl_operatori" per ricavare il nome di "$operatore_id".


    Grazie

  2. #2
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Devi eseguire una SELECT con INNER JOIN

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    84
    Forse sbaglio qualcosa ma non funziona:

    codice:
    $stmt_edit = $connection->prepare("    
                                           SELECT ferie_id, ferie_operatore_id, ferie_periodo 
                                                FROM tbl_ferie 
                                                    INNER JOIN tbl_operatori 
                                                        ON tbl_ferie.ferie_operatore_id = tbl_operatori.operatore_id
                                                            WHERE ferie_id = '".$ferie_id."' ");
    Tra l'altro non dovrei citare anche 'operatore_nome' nella query?

  4. #4
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Ad occhio mi sembra corretta, cosa c'è che non va?
    Nella select puoi aggiungere anche le colonne della tabella operatore.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    84
    Quando stampo, il nome dell'operatore ($operatore_nome) risulta vuoto:

    codice:
    $ferie_id= "1";
    
    
    
    $stmt_edit = $connection->prepare("    
                                           SELECT ferie_id, ferie_operatore_id, ferie_periodo 
                                                FROM tbl_ferie 
                                                    INNER JOIN tbl_operatori 
                                                        ON tbl_ferie.ferie_operatore_id = tbl_operatori.operatore_id
                                                            WHERE ferie_id = '".$ferie_id."' ");
                                                            
    $stmt_edit->execute(array(':ferie_id' => $ferie_id));
    $data_edit = $stmt_edit->fetch(PDO::FETCH_ASSOC);
    
    
    
    
    $operatore_id = $data_edit['ferie_operatore_id'];
    $operatore_nome = $data_edit['operatore_nome'];
    $periodo = $data_edit['ferie_periodo'];
        
    print($operatore_id." - ".$operatore_nome." - ".$periodo);
    Ultima modifica di jip77; 21-08-2025 a 08:58

  6. #6
    se esegui la query direttamente in un client tipo dbeaver, o phpmyadmin, il valore dell'operatore viene estratto? per capire se è un problema di query o di php

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    84
    Ho aggiunto 'operatore_nome' nella SELECT ed ora funziona:
    codice:
    $stmt_edit = $connection->prepare("SELECT ferie_id, ferie_operatore_id, ferie_periodo, operatore_nome
                                                FROM tbl_ferie 
                                                    INNER JOIN tbl_operatori 
                                                        ON tbl_ferie.ferie_operatore_id = tbl_operatori.operatore_id 
                                                            WHERE ferie_id = '".$ferie_id."' ");


    Purtroppo in passato, nella struttura delle tabelle, ho sempre commesso l'errore di nominare l'indice sempre nello stesso modo (id). Ho visto che con INNER JOIN, se le due tabelle hanno nomi identici per i campi, mi viene restituito un messaggio di errore.


    Grazie

  8. #8
    basta referenziare correttamente il campo, come hai fatto. Per essere più comodi, puoi usare degli alias per i nomi delle tabelle, cos' da non doverle ripetere per intero

  9. #9
    basta referenziare correttamente il campo, come hai fatto. Per essere più comodi, puoi usare degli alias per i nomi delle tabelle, cos' da non doverle ripetere per intero

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    84
    Quote Originariamente inviata da optime Visualizza il messaggio
    basta referenziare correttamente il campo, come hai fatto. Per essere più comodi, puoi usare degli alias per i nomi delle tabelle, cos' da non doverle ripetere per intero
    Ho usato l'esempio che ho fatto, anche su altre due tabelle che avevano il campo indice con lo stesso nome (id) e purtroppo mi veniva restituito un messaggio di errore. Potrei avere un esempio per gli alias?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.