[ sasa.k @ 03.08.2007. 10:02 ] @
Stvari stoje ovako:
Ucim rad sa bazama podataka u MySQL-u iz knjige:
"PHP and MySQL Web Development, 2Ed"
Za rad koristim WAMP5 1.7.0.
U knjizi se prati primer baze podataka koja se moze kreirati sledecim upitom:


-- phpMyAdmin SQL Dump
-- version 2.9.2
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Aug 03, 2007 at 07:49 AM
-- Server version: 5.0.27
-- PHP Version: 4.4.6
--
-- Database: `books`
--

DROP TABLE IF EXISTS `book_reviews`;
CREATE TABLE `book_reviews` (
`isbn` char(13) NOT NULL,
`review` text,
PRIMARY KEY (`isbn`)
) TYPE=InnoDB;

INSERT INTO `book_reviews` (`isbn`, `review`) VALUES
('0-672-31697-8', 'Morgan''s book is clearly written and goes well beyond\r\nmost of the basic Java books out there.');

DROP TABLE IF EXISTS `books`;
CREATE TABLE `books` (
`isbn` char(13) NOT NULL,
`author` char(30) default NULL,
`title` char(60) default NULL,
`price` float(4,2) default NULL,
PRIMARY KEY (`isbn`)
) TYPE=InnoDB;

INSERT INTO `books` (`isbn`, `author`, `title`, `price`) VALUES
('0-672-31509-2', 'Pruitt, et al.', 'Teach Yourself GIMP in 24 Hours', 24.99),
('0-672-31697-8', 'Michael Morgan', 'Java 2 for Professional Developers', 34.99),
('0-672-31745-1', 'Thomas Down', 'Installing Debian GNU/Linux', 24.99),
('0-672-31769-9', 'Thomas Schenk', 'Caldera OpenLinux System Administration Unleashed', 49.99);

DROP TABLE IF EXISTS `customers`;
CREATE TABLE `customers` (
`customerid` int(10) unsigned NOT NULL auto_increment,
`name` char(30) NOT NULL,
`address` char(40) NOT NULL,
`city` char(20) NOT NULL,
PRIMARY KEY (`customerid`)
) TYPE=InnoDB AUTO_INCREMENT=4 ;

INSERT INTO `customers` (`customerid`, `name`, `address`, `city`) VALUES
(1, 'Julie Smith', '25 Oak Street', 'Airport West'),
(2, 'Alan Wong', '1/47 Haines Avenue', 'Box Hill'),
(3, 'Michelle Arthur', '357 North Road', 'Yarraville');

DROP TABLE IF EXISTS `order_items`;
CREATE TABLE `order_items` (
`orderid` int(10) unsigned NOT NULL,
`isbn` char(13) NOT NULL,
`quantity` tinyint(3) unsigned default NULL,
PRIMARY KEY (`orderid`,`isbn`)
) TYPE=InnoDB;

INSERT INTO `order_items` (`orderid`, `isbn`, `quantity`) VALUES
(1, '0-672-31697-8', 2),
(2, '0-672-31769-9', 1),
(3, '0-672-31509-2', 1),
(3, '0-672-31769-9', 1),
(4, '0-672-31745-1', 3);

DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders` (
`orderid` int(10) unsigned NOT NULL auto_increment,
`customerid` int(10) unsigned NOT NULL,
`amount` float(6,2) default NULL,
`date` date NOT NULL,
PRIMARY KEY (`orderid`)
) TYPE=InnoDB AUTO_INCREMENT=5 ;

INSERT INTO `orders` (`orderid`, `customerid`, `amount`, `date`) VALUES
(1, 3, 69.98, '2000-04-02'),
(2, 1, 49.99, '2000-04-15'),
(3, 2, 74.98, '2000-04-19'),
(4, 3, 24.99, '2000-05-01');



U knjizi stoji kao primer upit:

select customers.customerid, customers.name
from customers left join orders
using (customerid)
where orders.orderid is null;




Rezultat bi po knjizi trebao biti:
Code:

+------------+----------------+
| customerid | name           |
+------------+----------------+
|          4 | Melissa Jones  |
|          5 | Michael Archer |
+------------+----------------+



ali MySQL daje rezultat:

"MySQL returned an empty result set (i.e. zero rows)."



Da li je greska u knjizi ili je nesto lose kod moje verzije MySQL-a?
Sta je ispravno?
[ chachka @ 03.08.2007. 11:01 ] @
Uradi:
Code:

SELECT customers.customerid, customers.name
  FROM customers;

Ovaj upit daje sve kupce koji su evidentirani u sistemu, pa sam dodji do zakljucka.
[ sasa.k @ 05.08.2007. 10:25 ] @
Hvala chachka,
ali te osnovne upite sam presao, i to mi je jasno,
ali kod navedenog upita:

select customers.customerid, customers.name
from customers left join orders
using (customerid)
where orders.orderid is null;

nije mi jasno da li je los upit ili je nesto drugo u pitanju,
jer se ne dobija ocekivani rezultat???

Molim nekog da mi razjasni. Hvala.
[ chachka @ 05.08.2007. 12:06 ] @
Razmisli malo sam.

Upit kojeg sam ti dao vraća SVE kupce koji se nalaze u sistemu, a njih ima TROJE! To su kupci:
Code:

customerid   name
==========   ===============
         1   Julie Smith
         2   Alan Wong
         3   Michelle Arthur

Kako onda očekuješ da ti neki upit izlista kupce Melissa Jones i Michael Archer koji se uopšte ni ne nalaze u tabeli kupaca?!

Žigić više ne igra za Crvenu Zvezdu. Da li očekuješ da on da gol na sledećem derbiju Crvena Zvezda : Partizan?

Ja ne mogu da ti kažem da li je greška u knjizi, dok ne pročitam ceo taj deo koji te muči. Možda autor knjige nije dao sve testne podatke? Možda ti nisi uneo sve testne podatke?

[Ovu poruku je menjao chachka dana 05.08.2007. u 13:17 GMT+1]
[ sasa.k @ 05.08.2007. 12:25 ] @
Mogu samo da kazem HVALA chachka sto si mi otvorio oci!
Dok sam trazio problem u upitu, resenje je bilo na drugoj strani :-)
[ sasa.k @ 19.10.2007. 23:41 ] @
Imam problema oko upita za bazu koja se (u MySQL-u) kreira sledecim kodom:



-- phpMyAdmin SQL Dump
-- version 2.9.2
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Oct 19, 2007 at 07:17 AM
-- Server version: 5.0.27
-- PHP Version: 4.4.6
--
-- Database: `septembar2007`
--

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

--
-- Table structure for table `radnik`
--

DROP TABLE IF EXISTS `radnik`;
CREATE TABLE `radnik` (
`ime` varchar(20) NOT NULL,
`prezime` varchar(20) NOT NULL,
`mbr` varchar(20) NOT NULL,
PRIMARY KEY (`mbr`)
) TYPE=InnoDB;

--
-- Dumping data for table `radnik`
--

INSERT INTO `radnik` (`ime`, `prezime`, `mbr`) VALUES
('Perica', 'Stojanovic', '124'),
('Janko', 'Petrovic', '132'),
('Slavica', 'Milicevic', '134'),
('Milena', 'Todorovic', '152'),
('Sreten', 'Jovic', '201'),
('Marko', 'Petrovic', '202');

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

--
-- Table structure for table `rukovodi`
--

DROP TABLE IF EXISTS `rukovodi`;
CREATE TABLE `rukovodi` (
`mbrsef` varchar(20) NOT NULL,
`mbrradnik` varchar(20) NOT NULL,
PRIMARY KEY (`mbrsef`,`mbrradnik`)
) TYPE=InnoDB;

--
-- Dumping data for table `rukovodi`
--

INSERT INTO `rukovodi` (`mbrsef`, `mbrradnik`) VALUES
('123', '134'),
('123', '152'),
('124', '201'),
('202', '123'),
('202', '124');





E, sad trebam da sastavim upite:
1) koji vraca spisak koji sadrzi ime i prezime radnika kao i ime i prezime njegovog sefa (rukovodioca)
2) koji kreira spisak svih radnika (ime i prezime) koji se nalaze na poziciji rukovodioca, kao i broj radnika kojima su neposredno nadredjeni.


Ako bi mi neko pomogao, dobro bi mi doslo, jer ne znam kako da povezem "u krug" da to prokazem.
HVALA.