• User Newbie

    aiuto php mysql

    salve sono nuovo
    avrei bisogno di una mano sono incasinatissimo.
    allora vi pondo il mio problema:
    ho una base di dati per gestire il trasporto pubblico
    con queste tabelle:

    LINEA:id_linea,nome,stazione_partenza,stazione_arr ivo;
    FERMATA: id_fermata,nome,id_linea; id_linea è foreign key per LINEA
    SCALO: id_scalo, id_fermata,id_linea1,id_linea2; è una fermata che ha due linee

    ora data una stazione di arrivo e una di partenza
    vorrei ottenere una tupla con la stazione di partenza, eventuali scali e la stazione di arrivo.
    come potrei fare? sono giorni che ci sbatto la testa ma non riesco a trovare una soluzione decente.
    ps:magari utilizzando anche una funzione

    vi prego aiutatemi.


  • Super User

    $stazionePartenza= stringa_quotata($stazionePartenza);
    $stazioneArrivo= stringa_quotata($stazioneArrivo);

    "select fermata.id_fermata, fermata.nome, scalo.id_scalo
    from linea,fermata,scalo
    where linea.stazione_partenza = ".$stazionePartenza." and
    linea.stazione_arrivo = ".$stazioneArrivo;

    prova così :ciauz: :ciauz:


  • User

    Detto che la struttura del database non mi sembra affatto ragionevole, il che implica restrizioni (possibile che non ci sia una "posto" dove passano 3 linee?)
    e difficolta' nelle query, motivo dei giorni di sbattimento della testa (join su FERMATA e SCALO che sono due tabelle con contenuti dello stesso tipo)....

    SELECT
    id_linea,
    nome,
    stazione_partenza,
    stazione_arrivo,
    IFNULL(FERMATA.nome,FERMATA1.nome),
    IFNULL(FERMATA2.nome,'non applicabile')
    FROM LINEA
    LEFT JOIN FERMATA
    USING(id_linea)
    LEFT JOIN SCALO AS SCALO1
    ON LINEA.id_linea = SCALO1.id_linea1
    LEFT JOIN FERMATA AS FERMATA1
    SCALO1.id_fermata = FERMATA1.id_fermata
    LEFT JOIN SCALO AS SCALO2
    ON LINEA.id_linea = SCALO2.id_linea2
    LEFT JOIN FERMATA AS FERMATA2
    SCALO1.id_fermata = FERMATA2.id_fermata
    WHERE
    stazione_partenza = $stazione_partenza
    stazione_arrivo =$stazione_arrivo

    Questa penso faccia piu' o meno quello di cui hai bisogno (chiaramente non ho potuto testarla)... facci sapere.

    Onestamente ti consiglierei di ristrutturare completamente il database in maniera ragionevole. Le query sarebbero banali.

    ciao