2 ilgili tablolardan Timeline

2 Cevap php

Diyelim ki bir screenshots masa ve bir replies tablo var diyelim. Yani: Her ekran (tek-çok) birden fazla cevap olabilir. Şimdi, iki kombine zaman çizelgesi oluşturmak istiyorum, ama gerçekte, onlar (yapıda) oldukça ilgisiz konum.

Nasıl azalan, kendi yayınlamak zaman sipariş, iki tablodan veri seçebilirsiniz; örneğin, ben bir yazı, birkaç yorum, daha sonra başka bir yazı var ne zaman O zaman çizelgesi nasıl oldu olabilir çünkü?

Normal olarak, tablo hem birleştiren seçilmesi; ama gerçekleşmesi istemiyorum. Bu konuda, ben de tabloları ayırt gerekir. İşte tablolar için yapı bulunuyor ...

--
-- Table structure for table `screenshots`
--

CREATE TABLE IF NOT EXISTS `screenshots` (
  `id` int(11) NOT NULL auto_increment,
  `user` int(11) NOT NULL,
  `description` text NOT NULL,
  `time` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `ext` varchar(4) NOT NULL default 'png',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;

-- --------------------------------------------------------

--
-- Table structure for table `screenshot_replies`
--

CREATE TABLE IF NOT EXISTS `screenshot_replies` (
  `id` int(11) NOT NULL auto_increment,
  `user` int(11) NOT NULL,
  `parent` int(11) NOT NULL,
  `time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `text` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=27 ;

Note: bu this question bir yinelenen olabilir farkında ama benim için orada çalışan çözüm bulamadık.

Şimdiden teşekkürler! :)

2 Cevap

Bu durumda UNION kullanmanız gerekir:

(SELECT id, time, 'screenshots' as tableName FROM screenshots)
UNION
(SELECT id, time, 'replies' as tableName FROM screenshot_replies)
ORDER BY time ASC

You can get the tablename of a field by using the mysql_tablename function in php
You can indicate the tablename as a column in the result set

Ben böyle bir sorun rastlamak ne zaman veri ayıklamak bir sorgu inşa edemez, çünkü, nerede imkansız şey yapmak buluyoruz, ben size doğru veri modeli var merak başlamak zorunda?

Ayıklamak istediğiniz hangi verileri ile başlayın, daha sonra değil, ters ve uzun vadede çok daha easiler bulmak, ve aynı zamanda esneklik muhtemelen performans, daha hızlı ve oldukça sık daha iyi olacak, bu sağlayan bir model oluşturmak.

Bu tabloları baktığımızda, ben ikisini neden sormak gerekiyor? Ne nesi var:

CREATE TABLE IF NOT EXISTS `screenshots` (
  `id` int(11) NOT NULL auto_increment,
  `user` int(11) NOT NULL,
  `description` text NOT NULL,
  `time` timestamp NOT NULL default CURRENT_TIMESTAMP,
  `ext` varchar(4) default 'png',
  `parent` int(11),
  `text` text,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

Yani bunu bir ekran görüntüsü (dahili ayarlanmışsa), modeli şimdi bir cevap (ana set ise) ya da ... sağlar beri ... bir bir ekran görüntüsü ise kolayca söylüyorum, ne istediğinizi yapmak için izin verecek cevap!