[PHP + MySQL] Merge di due tabelle Mysql differenti e non relazionate

neo996sps

Utente Attivo
31 Mag 2007
247
0
0
Trentino
Ciao a tutti,

stò maneggando con un CMS di mia creazione e mi sono accorto di aver fatto una fesseria. Ho gestito in maniera separata i dati di accesso ed i dati degli utenti. Ora mi trovo a dover "fondere assieme" le due tabelle, le cui strutture sono totalmente differenti e pertanto inutilizzabili con la clausola UNION.

Come posso quindi ottenere un'unica tabella con tutti i record prelevati dalle due tabelle?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
il saggio disse "che è senza 'fesserie' scagli la prima pietra".
prova a postare il dump delle tabelle, non c'è nulla che abbiano in comune?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,

Con la JOIN ma solo se entrambe le tabelle hanno un campo per l'id dell'utente

PHP:
$query = "SELECT * FROM utenti U 
              JOIN accessi A ON A.idUtente = U.idUtente 
              WHERE idUtente = $idUtente";

La sintassi per le join può variare, io preferisco questa
 

neo996sps

Utente Attivo
31 Mag 2007
247
0
0
Trentino
Questa è la struttura di utenti_accesso
PHP:
CREATE TABLE IF NOT EXISTS `utenti_accesso` (
  `id` bigint(20) NOT NULL auto_increment,
  `id_utenti_profilo` bigint(20) default NULL,
  `user` varchar(16) NOT NULL,
  `password` varchar(255) NOT NULL,
  `nominativo` varchar(255) default NULL,
  `limiti_id` varchar(255) default NULL,
  `flag_stato` int(4) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `id_utenti_profilo` (`id_utenti_profilo`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;

Questa è la struttura di point

PHP:
CREATE TABLE IF NOT EXISTS `point` (
  `id` bigint(50) NOT NULL auto_increment,
  `point` varchar(255) default NULL,
  `logo` varchar(255) default NULL,
  `descrizione_breve` text,
  `descrizione_estesa` text,
  `indirizzo` varchar(255) NOT NULL,
  `comune` varchar(255) NOT NULL,
  `telefono` varchar(15) NOT NULL,
  `fax` varchar(15) default NULL,
  `cellulare` varchar(15) default NULL,
  `referente` varchar(255) default NULL,
  `ordine` int(2) NOT NULL,
  `attivo` int(1) NOT NULL default '1',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

e sono andato a creare una terza tabella utenti dove inserire il tutto

PHP:
CREATE TABLE IF NOT EXISTS `utenti` (
  `id` bigint(20) NOT NULL auto_increment,
  `id_utenti_profilo` bigint(20) default NULL,
  `user` varchar(16) NOT NULL,
  `password` varchar(255) NOT NULL,
  `nominativo` varchar(255) default NULL,
  `limiti_id` varchar(255) default NULL,
  `flag_stato` int(4) NOT NULL,
  `point` varchar(255) default NULL,
  `logo` varchar(255) default NULL,
  `descrizione_breve` text,
  `descrizione_estesa` text,
  `indirizzo` varchar(255) default NULL,
  `comune` varchar(255) default NULL,
  `telefono` varchar(15) default NULL,
  `fax` varchar(15) default NULL,
  `cellulare` varchar(15) default NULL,
  `referente` varchar(255) default NULL,
  PRIMARY KEY  (`id`),
  KEY `id_utenti_profilo` (`id_utenti_profilo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Il problema è come buttare dentro tutto senza diventare matto...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ho la brutta (spero) impressione guardando le prime due tabelle che non essendoci nulla che le lega sia un po' un casino.
immagino che ad un record della prima (utenti_accesso) deve (dovrebbe) corrispondere un record della seconda (point), se è così forse l'unica speranza è che tu abbia inserito i record appaiati.
cioè
hai inserito un record nella utenti_accesso e subito dopo il record nella point.
se è così ordinando (es entrambe per id) ed estrendo riesci a "appaiare" i record, se non è così ho la vaga impressione che..."manina, manina".
forse dico una bestialità ma potresti provare a fare così
PHP:
<?php
//....
$q_1=mysql_query("SELECT * FROM utenti_accesso ORDER BY id");
$q_2=mysql_query("SELECT * FROM point ORDER BY id");
while ($riga_1=mysql_fetch_assoc($q_1)){
	$utenti[]=$riga_1;
}
/*dal while sopra dovrebbe risultarti (metto dei valori a caso)
$utenti[0]=array('id'=>'33','id_utenti_profilo'=>'88', 'user' => 'pinco', ecc...)
$utenti[1]=array('id'=>'44','id_utenti_profilo'=>'106', 'user' => 'pallo', ecc...)
ecc.....
*/
while ($riga_2=mysql_fetch_assoc($q_2)){
	$point[]=$riga_2;
}
//array di array come sopra
for($k=0; $k < count($utenti);$k++){
	foreach($utenti[$k] as $chiave => $valore){
		$inser[]=$valore_1;
	}
	foreach($point[$k] as $chiave => $valore){
		$inser[]=$valore_1;
	}
	/*l'array $inser dovrebbe risultare con i valori dei campi
	$inser[0] = id della tabella utenti
	ecc..
	$inser[6] = flag_stato della tabella utenti
	$inser[7] = id della tabella point
	ecc..
	$inser[19] = attivo della tabella poin
	se ho contato bene
	*/
	//ora fai l'insert nella terza tabella mantenendo l'ordine
	$q="INSER INTO terza(id_utenti_profilo, ...) VALUES('{$inser[1]}', ...");
	//unsetti l'array per ricominciare da 0
	unset($inser);
}
?>
però guarda che è un'idea tutta da provare (non mandarmi a quel paese se non funzia)
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Codifica caratteri speciali mysql php PHP 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
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
Z MySql injection PHP PHP 1
D problema php mysql PHP 1
D problema php mysql PHP 1
L Google chart php mysql PHP 2
L Aiuto per programma web php/mySQL PHP 2
S Problemi delle funzioni eliminate con PHP e MySQL PHP 4
C Aiuto compiuto scuola PHP/MySQL PHP 2
G Problema caricamento tabelle MySql da PhP PHP 0
L update tabelle in php mysql [risolto] PHP 6
F Passare una variabile php dal DB mysql alla pagina PHP 3
B Fare calcoli con php da tabella mysql PHP 2
D [MySQL] [PHP] SQL andare da capo MySQL 0
P [OFFRO] Realizzazione siti web in PHP/MYSQL, responsive e Ottimizzati SEO Offerte e Richieste di Lavoro e/o Collaborazione 0
Tommy03 Firebase o PHP+Mysql? Sviluppo app per Android 0
pjtertdj Visualizzazione dati in php da mysql con funzione matematica in javascript PHP 1
E Cerco programmatore PHP/Mysql - retribuito Offerte e Richieste di Lavoro e/o Collaborazione 0
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
Z Gestionale in Php/mysql: Quanto farsi pagare? Aiuto! Discussioni Varie 0
E Inserimento dati da PHP in tabella MySQL PHP 5
R radio input php mysql PHP 2
E Caricare dati da DB MySql all'apertura pagina, meglio PHP o Javascript? PHP 1
giusebos [retribuito] Cercasi programmatore PHP/MySql Offerte e Richieste di Lavoro e/o Collaborazione 1
N Apache + MySQL + PHP MacOs Mojave Web Server 0
T PHP+MYSQL: problema con quelle maledette lettere accentate... PHP 5
K [PHP + MYSQL ] Inserimento dati in database da form dinamico PHP 13
M [PHP] Metodo migliore per fare login a un DB Mysql PHP 1
gandalf1959 problema con la codifica caratteri accentati e speciali tra php e mysql PHP 3
webmachine [PHP][MYSQL] Problema con le SELECT PHP 5
V Creare tabella mysql con php non funziona PHP 1
W Area riservata sicura PHP MySQL PHP 12
G php salvare file in campo blob mysql: massimo 4MB PHP 1
xone [Vendo] Gestionale Magazzino PHP-MYSQL Altri Annunci 0
M Stampare con php e mysql PHP 8
P Importazione dati da file xml in db mysql con php PHP 17
xone [Vendo] Script gestionale php-mysql gestione pratiche Altri Annunci 0
D problemi login php 5.6 mysql PHP 1
T PHP+MYSQL: stampare record con numero progressivo PHP 3
F php PDO mysql connessione(select_db) PHP 3
O paginazione php mysql PHP 10
Fede72 Controllo registrazioni PHP Mysql PHP 5
M Aggioranre record in tabella PHP MYSQL PHP 2

Discussioni simili