CREATE TABLE IF NOT EXISTS `sendticket` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ticketid` int(11) NOT NULL,
`sendby_id` int(11) NOT NULL,
`sendto_id` varchar(60) NOT NULL,
`send_on` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `sendticket` (`id`, `ticketid`, `sendby_id`, `sendto_id`, `send_on`) VALUES
(1, 2, 1, '10', 1399276280),
(2, 4, 2, '[email protected]', 1399276280);
Was ich benötige, ist, die Details der Tickets zu erhalten, die mir geschenkt werden. Ich verwende die folgende Abfrage, aber selbst wenn ich keine Tickets erhalten habe, werden Datensätze zurückgegeben.
$userid=1;
$query = $this->db->query("
select
s.send_on, s.sendby_id,
t.ticket_key, t.video_id,
a.first_name, a.last_name,
v.title, v.videothumbnail
from sendticket as s
LEFT JOIN ticket as t ON s.ticketid=t.id
LEFT JOIN auth_user_profiles as a ON a.user_id=s.sendby_id
LEFT JOIN video as v ON t.video_id=v.videoid and s.sendto_id=$userid
order by s.send_on desc
");
Hier erwarte ich die Ticketdetails, Videodetails, für die das Ticket gekauft wurde, und die Details des Benutzers, der mir das Ticket geschenkt hat, das in der Tabelle sendticket sendby_id ist. Derzeit habe ich keine geschenkten Tickets, daher sollte es keine Datensätze geben. Aber stattdessen werden jetzt Datensätze zurückgegeben, die nicht meinen Anforderungen entsprechen.
Ich weiß, dass der linke Join in diesem Fall nicht funktioniert. Ich habe es mit INNER JOIN zusammen mit LEFT JOIN versucht. Aber es hat nicht funktioniert. Kann mir jemand helfen, dieses Problem zu beheben?
INSERT INTO `ticket` (`id`, `user_id`, `video_id`, `ticket_key`, `attempt`, `generated_on`, `status`) VALUES (1, 1, 5, '0b9d4d5aee', 0, 1399262972, 0), (2, 1, 5, '1f5de2cde3', 0, 1399263032, 0), (3, 1, 5, 'ba2376bb21', 0, 1399263036, 0), (4, 1, 2, 'd571360f37', 0, 1399267971, 0), (5, 1, 5, '99d98364e4', 0, 1399276280, 0), (6, 1, 5, '290486a5f5', 1, 1399281061, 0), (7, 1, 5, 'cccc1c72ab', 1, 1399281148, 0); [/code] sendticket (Tabelle, in der Details gespeichert werden, wenn das Ticket einem Freund geschenkt wird) [code]CREATE TABLE IF NOT EXISTS `sendticket` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ticketid` int(11) NOT NULL, `sendby_id` int(11) NOT NULL, `sendto_id` varchar(60) NOT NULL, `send_on` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `sendticket` (`id`, `ticketid`, `sendby_id`, `sendto_id`, `send_on`) VALUES (1, 2, 1, '10', 1399276280), (2, 4, 2, '[email protected]', 1399276280); [/code] Was ich benötige, ist, die Details der Tickets zu erhalten, die mir geschenkt werden. Ich verwende die folgende Abfrage, aber selbst wenn ich keine Tickets erhalten habe, werden Datensätze zurückgegeben. [code]$userid=1;
$query = $this->db->query(" select s.send_on, s.sendby_id, t.ticket_key, t.video_id, a.first_name, a.last_name, v.title, v.videothumbnail from sendticket as s LEFT JOIN ticket as t ON s.ticketid=t.id LEFT JOIN auth_user_profiles as a ON a.user_id=s.sendby_id LEFT JOIN video as v ON t.video_id=v.videoid and s.sendto_id=$userid order by s.send_on desc "); [/code] Hier erwarte ich die Ticketdetails, Videodetails, für die das Ticket gekauft wurde, und die Details des Benutzers, der mir das Ticket geschenkt hat, das in der Tabelle sendticket sendby_id ist. Derzeit habe ich keine geschenkten Tickets, daher sollte es keine Datensätze geben. Aber stattdessen werden jetzt Datensätze zurückgegeben, die nicht meinen Anforderungen entsprechen. Ich weiß, dass der linke Join in diesem Fall nicht funktioniert. Ich habe es mit INNER JOIN zusammen mit LEFT JOIN versucht. Aber es hat nicht funktioniert. Kann mir jemand helfen, dieses [url=viewtopic.php?t=26065]Problem[/url] zu beheben?
Wie kann ich das folgende SQL in einer Modellmethode in meiner CodeIgniter-Anwendung implementieren?
SELECT *
FROM userinfo t1
JOIN (
SELECT value AS val_pas, attribute AS att_type
FROM radcheck...
Ich habe diese Anfrage:
return $this->db
->select('forumCategories.id, forumCategories.name, forumCategories.order, forumCategories.date_created, COUNT(forumPosts.forumCategory_id) as postCount')...
Ich habe Probleme beim Übersetzen dieser Datenbankabfrage
SELECT 'conversations','conversation_id',
'conversations','conversation_subject',
MAX('conversations_messages','message_date') AS...
Ich möchte, wo Daten mit $ find auswählen, aber es (wo) nicht in der folgenden Abfrage und meine Ausgabe ist nicht , wie beheben?
$find= hello ;
$query = $this->db->query('
SELECT...
Ist es möglich, eine mit Codeigniter-Abfrageerstellungsmethoden erstellte Abfrage zurückzusetzen? Ich erstelle beispielsweise eine Abfrage und benötige eine ID für diese Abfrage aus der Datenbank....