So sind meine Tabellen zu zeigen:
user_msgs
: http://sqlfiddle.com/#!9/7d6a9
token_msgs
: http://sqlfiddle.com/#!9/3ac0ferstellen GROUP BY-Abfrage die letzte Zeile
Es gibt nur diese 4 Benutzer als aufgeführt. Wenn ein Benutzer eine Nachricht an einen anderen Benutzer sendet, prüft die Abfrage, ob eine Kommunikation zwischen diesen beiden bereits gestarteten Benutzern besteht, indem die Tabellen from_id und to_id überprüft werden. Wenn kein Token vorhanden ist, erstellen Sie token
und verwenden Sie diesen in der Tabelle user_msgs
. Das Token ist also ein eindeutiges Feld in diesen 2 Tabellen.
Jetzt möchte ich die Benutzer auflisten, mit denen user1
die Konversation gestartet hat. Wenn also from_id
oder to_id
1
enthalten, sollten diese Konversationen aufgelistet werden.
Es gibt mehrere Zeilen für Konversationen in der Tabelle user_msgs
für dieselben Benutzer.
Ich denke, ich muss group_concat
verwenden, aber nicht sicher. Ich versuche, die Abfrage zu erstellen, das gleiche zu tun, und die neuesten des Gesprächs auf der Oberseite zeigen, daher ORDER BY time DESC
:
SELECT * FROM (SELECT * FROM user_msgs ORDER BY time DESC) as temp_messages GROUP BY token
Bitte helfen Sie die Abfrage im Aufbau.
Dank.
CREATE TABLE `token_msgs` (
`id` int(11) NOT NULL,
`from_id` int(100) NOT NULL,
`to_id` int(100) NOT NULL,
`token` varchar(50) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Dumping data for table `token_msgs`
--
INSERT INTO `token_msgs` (`id`, `from_id`, `to_id`, `token`) VALUES
(1, 1, 2, '1omcda84om2'),
(2, 1, 3, '1omd0666om3'),
(3, 4, 1, '4om6713bom1'),
(4, 3, 4, '3om0e1abom4');
---
CREATE TABLE `user_msgs` (
`id` int(11) NOT NULL,
`token` varchar(50) NOT NULL,
`from_id` int(50) NOT NULL,
`to_id` int(50) NOT NULL,
`message` text NOT NULL,
`time` datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Dumping data for table `user_msgs`
--
INSERT INTO `user_msgs` (`id`, `token`, `from_id`, `to_id`, `message`, `time`) VALUES
(1, '1omcda84om2', 1, 2, '1 => 2\r\nCan I have your picture so I can show Santa what I want for Christmas?', '2016-08-14 22:50:34'),
(2, '1omcda84om2', 2, 1, 'Makeup tip: You\'re not in the circus.\r\n2=>1', '2016-08-14 22:51:26'),
(3, '1omd0666om3', 1, 3, 'Behind every fat woman there is a beautiful woman. No seriously, your in the way. 1=>3', '2016-08-14 22:52:08'),
(4, '1omd0666om3', 3, 1, 'Me: Siri, why am I alone? Siri: *opens front facing camera*', '2016-08-14 22:53:24'),
(5, '1omcda84om2', 1, 2, 'I know milk does a body good, but damn girl, how much have you been drinking? 1 => 2', '2016-08-14 22:54:36'),
(6, '4om6713bom1', 4, 1, 'Hi, Im interested in your profile. Please send your contact number and I will call you.', '2016-08-15 00:18:11'),
(7, '3om0e1abom4', 3, 4, 'Girl you\'re like a car accident, cause I just can\'t look away. 3=>4', '2016-08-15 00:42:57'),
(8, '3om0e1abom4', 3, 4, 'Hola!! \r\n3=>4', '2016-08-15 00:43:34'),
(9, '1omd0666om3', 3, 1, 'Sometext from 3=>1', '2016-08-15 13:53:54'),
(10, '3om0e1abom4', 3, 4, 'More from 3->4', '2016-08-15 13:54:46');
Put DDL/DML in Frage selbst. Link nicht zu externen Websites – hjpotter92
Bitte aktualisieren Sie die Frage mit erwartetem Ergebnis als Text und kennzeichnen Sie auch relevante RDBMS (nicht sowohl SQLServer und MYSQL), wenn Sie möchten, dass Ihre Abfrage auf beiden Versionen funktioniert, bitte geben Sie – TheGameiswar
@TheGameiswar getan – Somename