MySql funzione CONCAT_WS

Gioweb

Nuovo Utente
2 Apr 2014
21
0
0
Ciao trovo molto utili le VIEW in MySql per crearmi delle tabelle (view) ordinate come servono a me per poi ad esempio scaricarmi da phpmyadmin dei database in vari formati csv,xls ecc. per mille esigenze, vi facci un esempio:

Codice:
CREATE VIEW markers 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;


Adesso vorrei aggiungere un campo URL cercando di concatenare un url con il suo ID variabile tramite la funzione CONCAT_WS


Codice:
CONCAT_WS (' ',http://it.xxx.net/xxx/scheda.asp?id=,id) AS url,
il risultato però mi da uo spazio tra il link e l'ID così:
Codice:
http://it.xxx.net/xxx/scheda.asp?id= 333
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) AS servizi,
il risultato stampato è SI,SI,SI, oppure SI,NO,SI ecc. ecc. come posso sostituire il valore con il nome del servizio?

Sarei grato se mi potete indirizzare per risolvere questi due problemi. :)
 

Gioweb

Nuovo Utente
2 Apr 2014
21
0
0
Sono un po sul disperato... probabilmente la funzione concat non è adatta, help me.

Questo è lo schema del campo servizi, qualche idea su come fare?

Codice:
"Si No No No No"
"Servizio1"

"Si Si No No No"
"Servizio1, Servizio2"

"Si Si Si No No"
"Servizio1, Servizio2, Servizio3"

"Si Si Si Si No"
"Servizio1, Servizio2, Servizio3, Servizio4"

"Si Si Si Si Si"
"Servizio1, Servizio2, Servizio3, Servizio4, Servizio5"

"Si No Si Si Si"
"Servizio1, Servizio3, Servizio4, Servizio5"

"Si Si No Si Si"
"Servizio1, Servizio2, Servizio4, Servizio5"

"Si Si Si No Si"
"Servizio1, Servizio2, Servizio3, Servizio5"

"Si Si Si Si No"
"Servizio1, Servizio2, Servizio3 Servizio4"

questa la struttura come dovrebbe essere

Codice:
CREATE VIEW markers AS
SELECT id AS id,
rag_sociale AS name,
servizi,
latitudine AS lat,
longitudine AS lng,
CONCAT_WS (' ',indirizzo,cap,comune,provincia) AS address
FROM rivenditori
ORDER BY cap, comune ASC;

Grazie
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, il primo problema lo puoi risolvere con la funzione CONCAT che a differenza di CONCAT_WS non ti aggiunge il separatore
Codice:
CONCAT('http://it.xxx.net/xxx/scheda.asp?id=',id)
Il secondo non l'ho capito
 

Gioweb

Nuovo Utente
2 Apr 2014
21
0
0
Grazie adesso non c'è più lo spazio! Per la seconda cerco di spiegarmi meglio:

Nella tabella di origine "rivenditori" ho 3 servizi denominati ad es.: "Servizio1, Servizio2, Servizio3". Il valore utilizzato per indicare di quale servizio dispone il rivenditore nella tabella originale è Si/NO in ognuno dei 3 campi.

Con il CONCAT_WS
Codice:
CONCAT_WS (' ',servizio1,servizio2,servizio3) AS servizi,
nel risultato mi appare SI,SI,NO oppure SI,SI,SI ecc. ecc.

Come posso mostrare il nome dei servizi (Servizio1, Servizio3,ecc) quando il valore è Si?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
Come posso mostrare il nome dei servizi (Servizio1, Servizio3,ecc) quando il valore è Si?

ciao,
leggendo il manuale mySQL
http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if
http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#function_strcmp
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace

chissà,
Codice:
....
longitudine AS lng,
CONCAT_WS (' ',indirizzo,cap,comune,provincia) AS address,
REPLACE(
  CONCAT_WS (' ',
    IF(STRCMP(servizio1,'SI'),'xNO','servizio1'),
    IF(STRCMP(servizio2,'SI'),'xNO','servizio2'),
    IF(STRCMP(servizio3,'SI'),'xNO','servizio3')
  ), ' xNO', ''
) AS servizi
FROM rivenditori
potrebbe lavorare bene ....
non ho mySQL e non posso provarla,
preferisco avere in risposta 'xNO' se negativo,
perchè potrebbe rispondere NULL se impostata con doppi apici ('')
dal tuo esempio, la virgola dopo ciascun servizio l'ho tralasciata, rende la gestione più difficile
ciao
Marino
 
Ultima modifica:

Gioweb

Nuovo Utente
2 Apr 2014
21
0
0
Grazie marino51! con qualche piccola modifica il codice fa quello che mi serviva, funziona alla grande!
Per 'xNO' dopo aver visto che funzionava, l'ho svuotato così '' per non mostrarlo.
Per i punti vendita che hanno ad esempio solo il servizio1 e il servizio5, tra i due nomi stampati mi si frapponevano 4 spazi un po antiestetici, allora ho pensato di sostituire CONCAT_WS con CONCAT che come ha scritto criric non restituisce spazi, gli spazi che mi servivano tra un servizio e l'altro li ho messi direttamente nel testo replace tranne per l'ultimo servizio che conclude.

Codice:
....
longitudine AS lng,
REPLACE(
CONCAT (' ',
IF(STRCMP(servizio1,'Si'),'','Nome Servizio 1 '),
IF(STRCMP(servizio2,'Si'),'','Nome Servizio 2 '),
IF(STRCMP(servizio3,'Si'),'','Nome Servizio 3 '),
IF(STRCMP(servizio4,'Si'),'','Nome Servizio 4 '),
IF(STRCMP(servizio5,'Si'),'','Nome Servizio 5')
),'',''
FROM rivenditori
[/QUOTE]

Ho evitato di mettere virgole come mi servivano dopo il punto 1,2,3,4 e punto finale dopo il servizio 5 nel testo replace, perchè se un negozio ha solo il servizio 1 appare giustamente una virgola al posto del punto. Mi potete consigliare qualcosa per questo?

Grazie ancora a tutti e due, mi havete risolto un bel problema!!!! :byebye:
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ciao,
in realtà ' xNO' era preceduto da uno spazio nel mio esempio proprio per gli "inestetismi",
per la virgola, puoi mettere una "replace" più esterna che ti sostituisce lo spazio con virgola e spazio a patto che "servizio_1"
non abbia spazio tra la parola servizio e 1
ciao
Marino
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
pjtertdj Visualizzazione dati in php da mysql con funzione matematica in javascript PHP 1
M funzione mysql che ritorna i microsecondi a partire dal 1-1-1970 MySQL 3
batmanLF [MySQL] Problema funzione SUM MySQL 1
Gioweb MySql funzione CONCAT_WS MySQL 4
E Riempimento di un combobox con dati mysql in funzione di altro combobox PHP 3
M errore lettura data nel mysql con funzione Where PHP 1
T [MYSQL] Richieste in Java per funzione Ajax MySQL 0
M funzione mysql fetch array PHP 3
D Scaricare database MYSql con una funzione MySQL 0
M funzione lettura mysql, variabile di variabile PHP 0
X NOW() funzione mysql eseguita da php PHP 6
R Quale la funzione mysql query. PHP 3
K form Inserimento record mysql PHP 2
P Mysql lento a cancellare MySQL 1
P Codifica caratteri speciali mysql php PHP 0
N MAX() + ADD_DATE - per update su Mysql MySQL 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
W MySQL ciclo in SELECT MySQL 0
L Mysql gestionale multipiattaforma MySQL 0
W MySQL SELECT list dinamica MySQL 0
M utilizzo mysql in nodejs - crea createdAt e updateAt MySQL 1
T colonne di tabelle mysql ordinate MySQL 0
M Sintassi "personalizzata" per mysql workbench? MySQL 0
A Mysql MySQL 0
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
Z Controllo giorni MYSQL PHP 0
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
Z MySql injection PHP PHP 1
D controllare valore in tabella mysql PHP 0
A pulsante di update campo mysql con javascript Javascript 2
R Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql MySQL 1
T differenza fra mysql xampp e un mysql server Database 0
R Importazione csv su mysql tramite array PHP 2
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
D problema php mysql PHP 1
D problema php mysql PHP 1
N Server mysql non raggiungibile da connessione esterna MySQL 1
B Crea pdf da tabella mysql "ultima riga modificata" MySQL 4
D evitare di inserirre duplicati in mysql PHP 4
L salvare codice html in mysql PHP 3
L Google chart php mysql PHP 2

Discussioni simili