2016-05-06 11 views
0

Hallo Ich bin ziemlich neu in MySQL und ich habe ein Problem, das ich nicht lösen kann. Ich habe eine Tabelle "option_benefits_id".MySQL Zeilen einfügen mit Hilfe von count

id | option_id | benefit_id 
=========================== 
1 |  1  |  1 
2 |  1  |  2 
3 |  1  |  3 
4 |  2  |  1 
5 |  2  |  3 
6 |  2  |  4 

Nach einem „user“ wählt eine „Option“ Ich habe die „user_option_benefit“ Tabelle automatisch suchen auffüllen möchten, wie folgt:

id | user_id | option_benefit_id 
=========================== 
1 |  1  |  1 
2 |  1  |  2 
3 |  1  |  3 
4 |  2  |  4 
5 |  2  |  5 
6 |  2  |  6 

Ich habe nachgedacht die Zählung Befehl zu verwenden, in aber ich weiß nicht, wie ich es in einer Insert-Abfrage implementieren soll, damit es die Tabelle auffüllt.

Ich würde sehr Ihre Hilfe zu diesem Thema schätzen. Danke,

+0

Wenn ein "Benutzer" eine "Option" auswählt, nehme ich an, dass Sie zuerst die Einfügung in der Tabelle "option_benefits_id" vornehmen, richtig? Mit dem 'INSERT'-Befehl sollten Sie als Ergebnis die' id' der Zeile erhalten. Verwenden Sie diese 'id', um die neue Zeile in der Tabelle 'user_option_benefit' hinzuzufügen. Lass es mich wissen, wenn ich mich nicht klar mache. –

+0

Hallo vielen Dank für Ihren Kommentar. Jede "Option" besteht aus verschiedenen "Vorteilen". Diese werden unabhängig vom "Benutzer" behandelt. Wenn der "Benutzer" eine "Option" wählt, sollte er automatisch alle "Vorteile" zugewiesen bekommen, die mit dieser "Option" verbunden sind. Wenn also Benutzer 1 die Option 2 auswählt, sollte er über die "option_benefit_id" die Vorteile 1, 3 und 4 erhalten. Vielleicht mache ich das zu kompliziert? Der Grund für die Trennung von "Optionen" und "Benutzer" ist auch, die Option - Nutzen-Konstellation zu ändern, ohne sie für den Benutzer ändern zu müssen. Ich hoffe, das ist ein bisschen klarer? – Stefan

Antwort

0

Wenn der Benutzer eine Option wählt, sollten Sie X Einsätze machen, wo jeder eine der benefit_id ist. Um die IDs der Vorteile zu erhalten, sollten Sie keine count tun. Sie sollten alle benefit_id für die Option, die vom Benutzer ausgewählt wurde, abrufen und dann die Einsätze ausführen.

+0

Was wäre der beste Weg, dies zu tun? Ich weiß, ich könnte es loopen, aber für eine große Anzahl von Benutzern und Vorteilen wäre dies ziemlich speicherintensiv und langsam. – Stefan

+0

Ein Weg könnte sein, eine Zeile in eine Tabelle 'user_option' einzufügen und dort mit' option_id' und 'user_id' alle Vorteile zu erhalten, die mit dieser Option verbunden sind. –