Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] [MySQL] While, gdy parametrem sa dwa zapytania SELECT
Forum PHP.pl > Forum > PHP
saren_as
Witam!
Kombinuje, czytam i mimo to jestem za glopi na wyswietlenie tego co chce. Mam baze danych i trzy interesujace mnie tabele i takie dwa zapytania:

SELECT vserver_ip FROM vservers_status
JOIN vroots
ON vservers_status.vserver_ip = vroots.vid
WHERE vroots.existing = '1';


SELECT MAX(fs_usage)
FROM filers;


Jak z tego wyswietlic wszytkie vserver_ip, ktore spelniaja warunek z pierwszego oraz drugiego zapytania?

Chce to zrobic przez while (ewentualnie prosze tez o ukazanie mi jak by wygladalo jedno zlaczone zapytanie sql - wiem ze UNION ale nie wychodzi mi to jakos)
webasek
Może być union a może być łatwiej co to za tabela filers i jak ona się ma do tabeli vservers_status lub tabeli vroots?
saren_as
CREATE TABLE `filers` (
`filer_id` int(10) unsigned NOT NULL auto_increment,
`mount_point` varchar(255) NOT NULL default '',
`hostname` varchar(50) NOT NULL default '',
`production` tinyint(1) NOT NULL default '0',
`running` tinyint(1) NOT NULL default '0',
`fs_size` int(10) unsigned NOT NULL default '0',
`fs_usage` int(10) unsigned NOT NULL default '0',
`mem_size` int(10) unsigned default NULL,
`mem_usage` int(10) unsigned default NULL,
PRIMARY KEY (`filer_id`)
) TYPE=MyISAM;


CREATE TABLE `vroots` (
`vid` varchar(15) NOT NULL default '',
`filer` varchar(100) NOT NULL default '',
`xid` int(10) unsigned default NULL,
`existing` tinyint(1) NOT NULL default '0',
`count_idx` int(10) unsigned NOT NULL default '0',
`dist` varchar(100) default NULL,
`dist_ver` int(11) default NULL,
PRIMARY KEY (`vid`,`filer`),
UNIQUE KEY `index02` (`xid`,`filer`),
KEY `index01` (`vid`,`filer`,`existing`)
) TYPE=MyISAM;


CREATE TABLE `vservers_status` (
`vserver_ip` varchar(15) NOT NULL default '',
`filer_id` int(10) unsigned NOT NULL default '0',
`node_id` int(10) unsigned default NULL,
`started` tinyint(1) NOT NULL default '0',
`cpu_parts` int(10) unsigned NOT NULL default '0',
`cpu_usage` int(10) unsigned NOT NULL default '0',
`mem_size` int(10) unsigned default NULL,
`mem_usage` int(10) unsigned NOT NULL default '0',
`disk_size` int(10) unsigned default NULL,
`disk_usage` int(10) unsigned NOT NULL default '0',
`net_usage` bigint(20) unsigned NOT NULL default '0',
`_net_last` bigint(20) unsigned NOT NULL default '0',
`mem_usage_as` int(10) unsigned NOT NULL default '0',
`mem_size_as` int(10) unsigned NOT NULL default '0',
`net_usage_down` bigint(20) unsigned NOT NULL default '0',
`_net_last_down` bigint(20) unsigned NOT NULL default '0',
`net_usage_up` bigint(20) unsigned NOT NULL default '0',
`_net_last_up` bigint(20) unsigned NOT NULL default '0',
`date_created` datetime default NULL,
`last_modified` timestamp(14) NOT NULL,
PRIMARY KEY (`vserver_ip`),
UNIQUE KEY `index01` (`vserver_ip`)
) TYPE=InnoDB;

Tak to wyglada.
webasek
Zapytanie sql może wyglądać tak:


  1. SELECT vserver_ip FROM vservers_status JOIN vroots ON vservers_status.vserver_ip = vroots.vid
  2. WHERE vroots.existing = '1' AND filer_id IN (SELECT MAX(fs_usage)
  3. FROM filers)


o in możesz poczytać tutaj
saren_as
Nie wyskakuje mi zaden rekord, a napewno sa takie, ktore spelniaja wszystkie warunki. Mozesz jeszcze raz na to spojrzec:)
Dzieki za zainteresowanie!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.