Моя база данных MySQL содержит две таблицы: user
и coupon
(взаимно-однозначные отношения).Вставка в отношения «один-к-одному»
Я хотел бы выбрать всех пользователей, у которых нет купона, и создать новый (случайный и уникальный).
user TABLE:
___________________________________
| id | name | coupon_id |
-----------------------------------
1 John 5
2 Mary (null) // Need to create one coupon.
3 Doe 2
4 Max (null) // Need to create one coupon.
5 Rex 1
7 Bill (null) // Need to create one coupon.
coupon TABLE:
______________________________________________
| id | code (random 6-chars - unique) |
----------------------------------------------
1 80k2ni
2 0akdne
5 nk03jd
Ярлыки:
Выбрать всех пользователей без купона: SELECT * from user WHERE coupon_id IS NULL;
Создание случайного 6-символьному строку (MySQL): LEFT(sha1(rand()), 6)
.
У меня есть ощущение, что вы должны использовать [ВСТАВИТЬ ... SELECT] (https://dev.mysql.com/doc/refman/5.6/en/insert-select.html), хотя на самом деле у меня нет настройки для написания макетного запроса на данный момент –
@ Memor-X Спасибо за попытку помочь, но я не понял, как заставить его работать. Пожалуйста, напишите его, когда у вас есть время;) –
'SELECT u.is, u.name, COALESCE (u.coupon_id, LEFT (sha1 (rand()), 6)) FROM user u LEFT JOIN coupon c on u.coupon_id = c.id' Может быть, вы хотите, чтобы этот запрос был не очень ясным. – Mihai