Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Połączenie tabel JOIN SELECT
nowyyy31
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 20.08.2007
Skąd: Kartuzy

Ostrzeżenie: (0%)
-----


Mam problem z połączeniem tabel.

  1. CREATE TABLE IF NOT EXISTS `linki` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `grupyid` int(10) UNSIGNED NOT NULL,
  4. `url` varchar(255) NOT NULL,
  5. `data_pobrania` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 ;

+---+-+------------------+--------------------------+
|120|1|www.link1.pl |2012-06-01 00:00:00 |
|121|1|www.link2.pl |2012-04-01 00:00:00 |
|122|1|www.link3.pl |2012-03-01 00:00:00 |
|123|2|www.linkowy1.pl|2012-06-01 00:00:00 |
|124|2|www.linkowy3.pl|2012-04-01 00:00:00 |
|125|2|www.linkowy2.pl|2012-03-01 00:00:00 |
+---+-+------------------+--------------------------+
  1. CREATE TABLE IF NOT EXISTS `grupy_link` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `tytul` varchar(255) NOT NULL,
  4. `title` text NOT NULL,
  5. `pobrano` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  6. `aktywny` enum('yes','no') NOT NULL DEFAULT 'yes',
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=latin2

+---+-+------------------+--------------------------+----+
|215|1|Tytuł grupy 1 |2012-06-01 00:00:00 |yes |
|216|2|Tytuł grupy 2 |2012-04-01 00:00:00 |yes |
|217|2|Tytuł grupy 3 |2012-03-01 00:00:00 |no |
+---+-+------------------+--------------------------+----+
  1. SELECT grupy.title, linki.url
  2. FROM
  3. linki
  4. LEFT JOIN (SELECT id, title FROM grupy_link WHERE aktywny='yes' ORDER BY pobrano ASC) grupy ON grupy.id=linki.grupyid ORDER BY data_pobrania ASC


I chce pobrać najpierw z `grupy_link` najstarszą datę(pobrano) i następnie do tej grupy dobrać jednego linka dla tej grupy.

+-------tytul-----+------url--------------+-------pobrano----------+--data_pobrania------+
|Tytuł grupy id 2|www.linkowy2.pl | 2012-04-01 00:00:00 | 2012-03-01 00:00:00|
|Tytuł grupy id 1|www.link3.pl |2012-06-01 00:00:00 | 2012-03-01 00:00:00|
+-----------------+------------------------+-------------------------+-------------------------+

Ten post edytował nowyyy31 5.07.2013, 12:57:37
Go to the top of the page
+Quote Post
bpskiba
post
Post #2





Grupa: Zarejestrowani
Postów: 340
Pomógł: 49
Dołączył: 3.07.2009
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


  1. SELECT *
  2. FROM grupy_link
  3. JOIN linki ON linki.grupyid=grupy_link.id
  4. ORDER BY pobrano
  5. LIMIT 1
Go to the top of the page
+Quote Post
nowyyy31
post
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 20.08.2007
Skąd: Kartuzy

Ostrzeżenie: (0%)
-----


Nie do końca o to mi chodzi, nie chcę żeby mi się powtarzały "grupy_link.id", i chcę przynajmniej LIMIT 2

Ten post edytował nowyyy31 5.07.2013, 14:01:07
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  1. SELECT grupy.*, linki.url, linki.data_pobrania FROM (SELECT id, title, min(pobrano) pobrano FROM grupy_link WHERE aktywny='yes' GROUP BY 1,2) grupy JOIN linki ON linki.grupyid=grupy.id JOIN (SELECT grupyid, min(data_pobrania) data_pobrania FROM linki GROUP BY 1) x ON x.grupyid=linki.grupyid AND x.data_pobrania=linki.data_pobrania


Ten post edytował mmmmmmm 5.07.2013, 14:01:08
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 04:28