Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di xGioweb
    Registrato dal
    Oct 2007
    Messaggi
    114

    [MySQL] Tabella d'appoggio

    Ciao, faccio una domanda stupidissima nel pannello d'amministrazione MySQL si può "disegnare" una tabella che io chiamo d'appoggio che prenda i dati da un altra tabella dello stesso database?

    Chiarisco meglio... la nuova tabella deve essere così:

    codice:
    CREATE TABLE `markers` (
      `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
      `name` VARCHAR( 60 ) NOT NULL ,
      `address` VARCHAR( 80 ) NOT NULL ,
      `lat` FLOAT( 10, 6 ) NOT NULL ,
      `lng` FLOAT( 10, 6 ) NOT NULL 
    ) ENGINE = MYISAM ;
    dove ad esempio "address" deve contiene tutto l'indirizzo (zip code, via, citta ecc)
    es: 939 W El Camino Real, Mountain View, CA

    ma io ad i dati di indirizzo nella mia tabella ovviamente li ho in campi divisi e con nomi diversi
    Ad esempio io la latitudine la chiamo "latitudine" e la voglio trasformare in "lat"
    Non so se mi sono spiegato bene... in MySQL, si può ottenere questo?
    Ciao
    xGioweb

  2. #2

  3. #3
    Utente di HTML.it L'avatar di xGioweb
    Registrato dal
    Oct 2007
    Messaggi
    114
    A ecco si chiama view!

    Questi sono i dati che devo prendere dalla tabella d'origine:
    codice:
    CREATE TABLE `rivenditori` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `rag_sociale` varchar(60) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
      `nazione` varchar(30) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
      `indirizzo` varchar(60) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
      `latitudine` varchar(20) NOT NULL DEFAULT '0',
      `longitudine` varchar(20) NOT NULL DEFAULT '0',
      `cap` varchar(5) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
      `comune` varchar(60) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
      `provincia` varchar(5) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
    In pratica devo scrivere l'istruzione per creare la view e lanciare la query?
    Ciao
    xGioweb

  4. #4
    Utente di HTML.it L'avatar di xGioweb
    Registrato dal
    Oct 2007
    Messaggi
    114
    per adesso sono riuscito solo a creare la View lanciando la query:

    codice:
    CREATE VIEW markers AS SELECT * FROM rivenditori
    e sono fermo qui... adesso aprendo la tabella view vedo tutti i dati dell'altra tabella. Quando riuscirò a filtrarli dovrei vedere solo quelli scelti giusto?
    Ciao
    xGioweb

  5. #5
    Utente di HTML.it L'avatar di xGioweb
    Registrato dal
    Oct 2007
    Messaggi
    114
    bene, sono riuscito a buttare giù una query che mi ha creato la view filtrando solo i campi prescelti.

    codice:
    CREATE VIEW markers
    AS 
    SELECT id, rag_sociale, nazione, indirizzo, latitudine, longitudine, cap, comune, provincia
    FROM rivenditori
    Adesso devo riuscire ad unire (indirizzo, cap, comune, provincia, nazione) in un unico campo "address" questo si può fare, giusto?
    Ciao
    xGioweb

  6. #6
    devi usare

    CONCAT()
    oppure
    CONCAT_WS()

    http://dev.mysql.com/doc/refman/5.0/...tion_concat-ws
    http://database.html.it/articoli/leg...e-soluzioni/3/

    select CONCAT_WS('-',campo1,campo2,...) from tabella

    ti da:
    calore_campo1-valore_campo2-....


  7. #7
    Utente di HTML.it L'avatar di xGioweb
    Registrato dal
    Oct 2007
    Messaggi
    114
    mi stà piacendo molto imparare queste cose stò cominciando a vedere il db sotto un altra luce!!!!

    Ho eseguito la nuova query e funziona!!!

    codice:
    	
    CREATE VIEW markers  AS
    SELECT id, rag_sociale, latitudine, longitudine,
    CONCAT_WS (' ',indirizzo,cap,comune,provincia)
    FROM rivenditori
    ORDER BY cap, comune ASC;
    L'unico problema è che il nuovo campo CONCAT_WS come nome della colonna ha "CONCAT_WS (' ',indirizzo,cap,comune,provincia)" e volevo anche modificare le diciture degli altri campi per renderli congruenti con la tabella


    codice:
    CREATE TABLE `markers` (
      `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
      `name` VARCHAR( 60 ) NOT NULL ,
      `address` VARCHAR( 80 ) NOT NULL ,
      `lat` FLOAT( 10, 6 ) NOT NULL ,
      `lng` FLOAT( 10, 6 ) NOT NULL 
    ) ENGINE = MYISAM ;
    la modifica del nome della colonna va fatta contestualmente alla prima query o successivamente?
    Grazie per tutto!!
    Ciao
    xGioweb

  8. #8
    Originariamente inviato da xGioweb
    mi stà piacendo molto imparare queste cose stò cominciando a vedere il db sotto un altra luce!!!!
    Sì la programmazione SQL è molto potente..
    tanti programmano in PHP, ASP o altro e poi non conoscendo bene sql si incartano in situazioni assurde...
    invece buone basi sql ti risolvono e semplificano il lavoro..

    L'unico problema è che il nuovo campo CONCAT_WS come nome della colonna ha "CONCAT_WS (' ',indirizzo,cap,comune,provincia)" e volevo anche modificare le diciture degli altri campi per renderli congruenti con la tabella
    devi usare un "alias" per la colonna

    codice:
    CREATE VIEW markers  AS
    SELECT id, rag_sociale, latitudine, longitudine,
    CONCAT_WS (' ',indirizzo,cap,comune,provincia) AS NOMEDELCAMPOSCELTODATE
    FROM rivenditori
    ORDER BY cap, comune ASC;

  9. #9
    Utente di HTML.it L'avatar di xGioweb
    Registrato dal
    Oct 2007
    Messaggi
    114
    philbert


    codice:
    CREATE VIEW markers2  AS
    SELECT id AS id,
    rag_sociale AS name,
    latitudine AS lat,
    longitudine AS lng,
    CONCAT_WS (' ',indirizzo,cap,comune,provincia) AS address
    FROM rivenditori
    ORDER BY cap, comune ASC;
    perfetto perfetto mi si aprono nuovi orizzonti!!!!!
    Grazie ancora philbert!!!
    Ciao
    xGioweb

  10. #10
    Utente di HTML.it L'avatar di xGioweb
    Registrato dal
    Oct 2007
    Messaggi
    114
    philbert ciao! riapro dopo tre anni questo argomento perchè ho un problema, anzi due...

    sto cercando di concatenare un url con il suo ID variabile

    codice:
    CONCAT_WS (' ',http://it.xxx.net/xxx/scheda.asp?id=,id) AS scheda,
    il risultato però mi da uo spazio tra il link e l'ID così:
    e questo ovviamente corrompe il link, sbaglio qualcosa tipo non è adatta la funzione CONCAT_WS per questa operazione?


    altra cosa, ho concatenato 4 campi che contengono servizi offerti ma nel database i valori sono SI/NO mentre vorrei mostrare il nome del servizio quando il campo contiene SI

    codice:
    CONCAT_WS (' ',servizio1,servizio2,servizio3,servizio4,servizio5) AS servizi,
    il risultato stampato è SI,SI,SI,SI oppure SI,NO,SI,NO ecc. ecc.

    Sarei grato se mi potete indirizzare per risolvere questi due problemi.
    Ciao
    xGioweb

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.