Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350

    query per relazionare due tabelle

    Buongiorno.
    Chiedo aiuto per mettere in relazione due tabelle di un database mysql. Non mi intendo di database.
    Allora, il mio database è composto di due tabelle: una tabella clienti e una tabella lavori. E sono fatte in questo modo:

    TABELLA CLIENTI:
    id INT(5) UNSIGNED ZEROFILL not null AUTO_INCREMENT
    cliente varchar(100) not null

    TABELLA LAVORI:
    id INT(5) UNSIGNED ZEROFILL not null AUTO_INCREMENT
    cliente varchar(100) not null
    tipo_lavoro varchar(100) not null
    prezzo varchar(100) not null
    ...

    Io vorrei che il campo cliente della tabella lavori fosse relazionato alla tabella clienti.
    Io ho provato a fare così:

    $query "SELECT clienti.cliente FROM clienti LEFT JOIN lavori ON clienti.cliente = lavori.cliente WHERE id='$id'";

    ma non funziona.
    Qualcuno mi sa dire dove sbaglio?
    Grazie mille!!!!

    P.S. Uso phpmyadmin
    pap

  2. #2
    Utente di HTML.it L'avatar di aserena
    Registrato dal
    Feb 2003
    Messaggi
    310

    Re: query per relazionare due tabelle

    Originariamente inviato da pap
    $query "SELECT clienti.cliente FROM clienti LEFT JOIN lavori ON clienti.cliente = lavori.cliente WHERE id='$id'";
    Siccome hai il campo id in entrambe le tabelle, dovresti specificare su quale tabella applicare la restrizione, quindi: WHERE clienti.id='$id'";


    ciao ^^
    La (!) è quella roba che in autunno si intristisce... perche': seccano i piselli, migrano gli uccelli, cadono i marroni, e se poi c'è anche la nebbia non si vede più un caXXo!! by Piero.mac @07/05

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350
    Grazie Aserena.
    Perdona l'ignoranza. Provo a capire:
    Tolgo l'id dalla tabella clienti e rendo il campo cliente della tabella clienti chiave primaria.
    E quindi scrivo WHERE id='$cliente'"
    Ho capito bene?
    pap

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350
    con WHERE clienti.id='$id'" non funziona lo stesso
    pap

  5. #5
    Utente di HTML.it L'avatar di aserena
    Registrato dal
    Feb 2003
    Messaggi
    310
    Originariamente inviato da pap
    con WHERE clienti.id='$id'" non funziona lo stesso
    Allora, devi un attimo capire come funziona la join: Quando fai una join nn fai altro che fare nel seguente ordine:
    1] il prodotto cartesiano di 2 ( o + ) tabelle
    2] la proiezione delle colonne interessate ( selezioni le colonne da mostrare)
    3] la restrizione dei record in base alle condizioni espresse nella clausola where


    $query = "SELECT clienti.cliente FROM clienti LEFT JOIN lavori ON clienti.cliente = lavori.cliente WHERE clienti.id='$id'";

    Così dovrebbe fungere, in ogni caso posta l'errore che ti dà così capiamo meglio.

    ciao
    La (!) è quella roba che in autunno si intristisce... perche': seccano i piselli, migrano gli uccelli, cadono i marroni, e se poi c'è anche la nebbia non si vede più un caXXo!! by Piero.mac @07/05

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350
    Ti ringrazio per la pazienza.
    Credo di aver capito la tua spiegazione sulla join. Ho provato a fare come mi dici, ma non funziona (forse non ho capito così bene... )...
    Comunque, mi sono letta un po' di cose e mi sembra di capire che a me può bastare da join interna (ho letto quanto scritto sulla join allindirizzo www.openskills.info/view/boxdetail.php?IDbox=1040&boxtype=description)
    Allora ho provato a farla e ho modificato anche qualcosa nei campi delle mie tabelle per capirci meglio.
    Ora i campi delle mie tabelle i chiamano così:

    TABELLA CLIENTI:
    id_cliente INT(5) UNSIGNED ZEROFILL not null AUTO_INCREMENT (chiave primaria)
    cliente varchar(100) not null

    TABELLA LAVORI:
    id_lavori INT(5) UNSIGNED ZEROFILL not null AUTO_INCREMENT (chiave primaria)
    id_cliente varchar(100) not null
    tipo_lavoro varchar(100) not null
    prezzo varchar(100) not null
    ...

    Come ti dicevo ho provato a fare la join interna, quindi ho fatto una query così (seguendo la spiegazione del sito che ti ho linkato):

    $query "SELECT lavori.*, clienti.cliente FROM lavori, clienti WHERE clienti.id_cliente = lavori.id_cliente"

    Ma non funziona.

    Questo è l'errore che mi da:

    Errore

    query SQL :

    $query "SELECT lavori.*, clienti.cliente FROM lavori, clienti WHERE clienti.id_cliente = lavori.id_cliente"

    Messaggio di MySQL:


    #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '$query "SELECT lavori.*, clienti.cliente FROM lavori, clienti W

    Grazie!!!
    pap

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    212
    $query = "SELECT ...

    ps. cambia: id_cliente varchar(100) not null

  8. #8
    Utente di HTML.it L'avatar di aserena
    Registrato dal
    Feb 2003
    Messaggi
    310
    A parte che manca il segno di = dopo la def della var che contiene la query....
    Poi la query che hai appena postato non è altro che una join interna, prova così, ilconcetto è lo stesso:
    Codice PHP:
    $query "SELECT lavori.*, clienti.cliente FROM (lavori inner join clienti on lavori.id_cliente = clienti.id_cliente)"
    oppure se usi phpmyadmin basta che digiti

    SELECT lavori.*, clienti.cliente FROM
    (lavori inner join clienti on lavori.id_cliente = clienti.id_cliente)

    nella finestra della query ciao
    La (!) è quella roba che in autunno si intristisce... perche': seccano i piselli, migrano gli uccelli, cadono i marroni, e se poi c'è anche la nebbia non si vede più un caXXo!! by Piero.mac @07/05

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350
    Originariamente inviato da kuba
    $query = "SELECT ...

    ps. cambia: id_cliente varchar(100) not null
    In questo modo non riesco ad impostare l'auto increment però
    pap

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    212
    e' qui che lo devi cambiare:
    TABELLA LAVORI:
    id_lavori INT(5) UNSIGNED ZEROFILL not null AUTO_INCREMENT (chiave primaria)
    id_cliente varchar(100) not null
    tipo_lavoro varchar(100) not null
    prezzo varchar(100) not null

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.