Database [MySQL]Ricavare nome da un id

Stato
Discussione chiusa ad ulteriori risposte.

Anumalix

Utente Bronze
30 Aprile 2014
21
5
3
44
Salve a tutti, rieccomi con un altra bella domanda dopo neanche 3 ore!

Ho più database, in questi ci sono alcune tabelle collegate tra esse.
Il mio problema non è ricavare questi dati e, per così dire, unirli, ma ricavare direttamente il nome dall'id senza che io esegua altre 5 query.

Vi faccio un esempio:
Eseguendo la query che ho fatto ricavo:

idusernameemailid1id2id3id4
1Anumalix[email protected]12131415

Io vorrei che da id1, id2, id3, id4 ricavi direttamente il nome da un'altra tabella ricavando una cosa del genere:


idusernameemailid1name1id2name2id3name3id4name4
1Anumalix[email protected]12Ciao13Pizza14Roccia15Cane


Si può fare? Grazie in anticipo!
 
Non credo di aver capito bene, ma se ciò che intendi è ricavare il contenuto di un campo di una tabella dipendentemente dal contenuto del campo di un altra, potresti avvalerti degli statments, ti faccio un esempio:

PHP:
$sql = "SELECT id1 FROM tabella WHERE username= '".$_SESSION['$username']."'";
	$query = mysqli_query($db,$sql);
	if($statment = mysqli_prepare($db,$sql))
	{
		mysqli_stmt_execute($statment);
		mysqli_stmt_bind_result($statment,$id1);
		mysqli_stmt_fetch($statment);		
		mysqli_stmt_close($statment);
	}

quindi

PHP:
$sql = "SELECT nome1 From tabella2 WHERE id1 = '$id1'";
	$query = mysqli_query($db,$sql);
	if($statment = mysqli_prepare($db,$sql))
	{
		mysqli_stmt_execute($statment);
		mysqli_stmt_bind_result($statment,$nome1);
		mysqli_stmt_fetch($statment);
		mysqli_stmt_close($statment);
	}

Se hai qualche dubbio chiedi pure, spero di esserti stato d'aiuto :)
 
  • Mi piace
Reazioni: Anumalix
In effetti, non hai capito, io vorrei ricavare i nomi direttamente dalla query principale evitando di eseguire altre 4 query per i nomi.
So, anche se non ne sono sicuro di ciò, che per questo si usano le JOIN, il problema è che non trovo nessun esempio che mi aiuti.
 
Ultima modifica:
In effetti, non hai capito, io vorrei ricavare i nomi direttamente dalla query principale evitando di eseguire altre 4 query per i nomi.
So, anche se non ne sono sicuro di ciò, che per questo si usano le JOIN, il problema è che non trovo nessun esempio che mi aiuti.

La funzione di cui parli, credo serva a separare i vari elementi di un array con una virgola per esempio.

PHP:
$result  =  join(",", array(
                          "The WordPress Anthology",
                          "PHP Master: Write Cutting Edge Code",
                          "Build Your Own Website the Right Way"));

echo $result;

result sarà:

The WordPress Anthology,PHP Master: Write Cutting Edge Code,Build Your Own Website the Right Way.

Si può usare anche implode(),che fa lo stesso lavoro in pratica.

http://www.php.net/manual/en/function.join.php
o
http://www.php.net/manual/en/function.implode.php

edit:

Questo credo faccia al caso tuo:

http://www.php.net/manual/en/function.implode.php#114834
 
  • Mi piace
Reazioni: Anumalix
Si tratta di una query mysql non di una funzione php! i dati devono prenderli (a patto che io ci riesca) con una query!
 
Si tratta di una query mysql non di una funzione php! i dati devono prenderli (a patto che io ci riesca) con una query!

Tu hai parlato di funzione Join() che svolge un procedimento analogo alla funzione implode(). Che io sappia una query, di solito, viene formattata come stringa in una variabile e poi gettata in una funzione php che la esegue in modo tale da interagire con il database. Visualizza l'ultimo link, che ti ho mandato, e avrai di sicuro le idee piu chiare.
 
  • Mi piace
Reazioni: Anumalix
Tu hai parlato di funzione Join() che svolge un procedimento analogo alla funzione implode(). Che io sappia una query, di solito, viene formattata come stringa in una variabile e poi gettata in una funzione php che la esegue in modo tale da interagire con il database. Visualizza l'ultimo link, che ti ho mandato, e avrai di sicuro le idee piu chiare.

Esiste join in mysql e non solo in php.

Inviato dal mio GT-S5839i con Tapatalk 2
 
  • Mi piace
Reazioni: Anumalix
Si, ho capito, ma esiste anche il JOIN nelle query e forse, è per questo che non ci capiamo!
Comunque sia, riflettendo penso la cosa non sia fattibile perché:
- dovrei creare virtualmente dei nuovi spazi, che non esistono.
- dovrei vedere l'id del nick nell'altra tabella senza eseguire più query.
- non penso si faccia con il JOIN.

Lascio comunque la discussione aperta nell'attesa che qualcuno mi risponda con se si può o no.
Intanto, grazie per l'interesse! [MENTION=140621]A.Galletta[/MENTION]
 
  • Mi piace
Reazioni: biotek_
Si, ho capito, ma esiste anche il JOIN nelle query e forse, è per questo che non ci capiamo!
Comunque sia, riflettendo penso la cosa non sia fattibile perché:
- dovrei creare virtualmente dei nuovi spazi, che non esistono.
- dovrei vedere l'id del nick nell'altra tabella senza eseguire più query.
- non penso si faccia con il JOIN.

Lascio comunque la discussione aperta nell'attesa che qualcuno mi risponda con se si può o no.
Intanto, grazie per l'interesse! [MENTION=140621]A.Galletta[/MENTION]

Ah, solo ora capisco ciò che intendevi, fammi dare un occhiata, scusa per l'insistenza ma non avevo compreso ciò che volevi intendere.

edit: [MENTION=209355]Anumalix[/MENTION]

Allora, a quanto ho letto a riguardo, spero di non sbagliarmi questa volta, questo forse potrebbe fare al caso tuo, sempre che tu non l'abbia già letto:

http://www.html.it/pag/32151/luso-delle-join
 
  • Mi piace
Reazioni: Anumalix
Ultima modifica:
Si, l'ho letto, ed è ciò che ho usato per produrre la mia query con tutti i risultati, il problema è che dovrei, dagli altri risultati, ricavare anche il nome da un'altra tabella ma non so come creare uno spazio virtuale, cioè 'name1', 'name2', ecc..
 
Si, l'ho letto, ed è ciò che ho usato per produrre la mia query con tutti i risultati, il problema è che dovrei, dagli altri risultati, ricavare anche il nome da un'altra tabella ma non so come creare uno spazio virtuale, cioè 'name1', 'name2', ecc..

A titolo informativo, potresti mostrarmi il metodo che hai usato?
 
Codice:
SELECT table1.id, table1.login, table1.email, table1.status,
           table2.pid1, table2.pid2, table2.pid3, table2.pid4

FROM database1.table1 as table1

JOIN database2.table2 as table2 ON table2.id = table1.id

WHERE table1.status = 'block';

- - - Updated - - -

Problema risolto,
chiudo.
 
Stato
Discussione chiusa ad ulteriori risposte.