2017-02-13 1 views
1

J'ai deux tables. table temporaire:Insérer des données d'une table à une autre table et ajouter de nouvelles valeurs

CREATE TABLE IF NOT EXISTS `temporary` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `FK_user` int(11) NOT NULL, 
    `FK_bin` varchar(50) NOT NULL, 
    `orderDate` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=35 ; 

Et les commandes tableau:

CREATE TABLE IF NOT EXISTS `orders` (
    `id` int(11) NOT NULL, 
    `FK_user` int(11) NOT NULL, 
    `FK_bin` varchar(50) NOT NULL, 
    `orderNumber` varchar(11) NOT NULL, 
    `orderDate` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

Je veux insérer toutes les valeurs de la table temporaire à la table des commandes et ajouter orderNumber manuellement avec ceci: uniqid(rand()).

Je vérifiions INSERT INTO orders SELECT * FROM temporary WHERE FK_user = ? Mais ils ne fonctionnent pas parce que orderNumber n'existent pas dans le tableau temporaire ...

Comment puis-je faire? S'il vous plaît

+1

Je ne vois pas le problème ici. Il suffit de spécifier les colonnes sur la sélection 'INSERT INTO ORDERS (id, utilisateur_FK, FK_bin, orderNumer, orderDate) SELECT t.id, t.FK_user, t.FK_bin, UUID() comme numéro de commande, t.orderDate de t temporaire; ' – Rumpelstinsk

+1

N'utilisez pas 'SELECT *'. mentionnez chaque nom de colonne dans les instructions insert et select ... – Naga

Répondre

4

En espérant que je comprends votre question correctement. Je pense que la requête ci-dessous aidera. Utilisez votre fonction pour générer le numéro de commande dans une instruction select comme mentionné dans la requête ci-dessus.

+0

Merci, c'est du travail, j'ai une question: le "as" est de connecter la variable uniqid à la colonne orderNumber? – Rocstar

+1

Comme c'est utilisé pour donner un alias à la valeur de votre fonction. Dans ce cas, nous donnons alias orderNumber à uniqid (rand()). – Tajinder