Intrebare interviu

Întrebări legate de conectarea la baze de date MySQL prin intermediul PHP

Moderatori: Zamolxe, Moderatori

phphp
Average Member
Mesaje: 69
Membru din: Mie Oct 23, 2013 7:28 pm

Intrebare interviu

Mesajde phphp » Sâm Mar 15, 2014 12:24 am

Ma poate ajuta cineva cu un "indiciu" pentru a solutiona aceasta cerinta? Inteleg cerinta si de ce trebuie sa obtin acel rezultat dar nu imi dau seama cum pot face asta dintr-o singura interogare
Fişiere ataşate
Untitled.png
Untitled.png (89.42 KiB) Vizualizat de 855 ori



Avatar utilizator
virus
Average Member
Mesaje: 153
Membru din: Dum Feb 27, 2011 3:16 pm
Localitate: Timisoara
Contact:

Re: Intrebare interviu

Mesajde virus » Sâm Mar 15, 2014 5:37 pm

Cod: Selectaţi tot

SELECT START_TIME FROM `TABLE_NAME` WHERE CONTAINER_EVENT_ID = 13666774
echo ($busy === TRUE) ? "F**k Off" : "Hello. Can I help You?" ;

phphp
Average Member
Mesaje: 69
Membru din: Mie Oct 23, 2013 7:28 pm

Re: Intrebare interviu

Mesajde phphp » Dum Mar 16, 2014 6:17 pm

Mersi pentru raspuns. Dar nu te-ai uitat si ce scrie dupa intrebare (The result should be 1836000, 1836000, 1891011, 1234567)

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4830
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Re: Intrebare interviu

Mesajde vectorialpx » Lun Mar 17, 2014 12:19 pm

Este destul de complicat, pentru ca primul element este dublat.
O idee, fara primul element:

Cod: Selectaţi tot

SELECT
   tt1.`start_time`,
   @eventId := tt1.`event_id`
FROM `test_table` tt1
JOIN ( SELECT @eventId :=1 ) tmp
WHERE
   `event_id` = 1
   OR `container_event_id` = @eventId


edit // probabil ca se mai poate face un join pentru acel prim element sau, o alta abordare.
Chiar sunt curios daca mai are altcineva o alta solutie.

Pentru cine mai vrea sa incerce, test table:

Cod: Selectaţi tot

CREATE TABLE IF NOT EXISTS `test_table` (
  `event_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `start_time` int(11) NOT NULL,
  `container_event_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`event_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

INSERT INTO `test_table` (`event_id`, `start_time`, `container_event_id`) VALUES
(1, 12, NULL),
(2, 13, 1),
(4, 14, 2),
(5, 15, 4),
(6, 16, 1);

Adaptat, trebuie sa returneze 12, 12, 13, 14, 15 DAR nu si 16
In acest moment, SQL-ul meu returneaza 12, 13, 14, 15

phphp
Average Member
Mesaje: 69
Membru din: Mie Oct 23, 2013 7:28 pm

Re: Intrebare interviu

Mesajde phphp » Mar Apr 08, 2014 4:35 pm

Scuze, am uitat sa mai verific acest topic. Imi poti da o referita, te rog, pentru acel select pe care faci join?

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4830
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Re: Intrebare interviu

Mesajde vectorialpx » Mie Apr 09, 2014 10:00 am

Daca nu specifici clauza ON la un INNER JOIN, de fapt se va face un CROSS JOIN
Acest CROSS JOIN este de fapt un produs cartezian (in cazul nostru, intre atribuirea SELECT @eventId :=1 si @eventId := tt1.`event_id`)

Oricum, am observat acum ca rezultatul este acelasi si fara acel JOIN.


Înapoi la “MySQL”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 2 vizitatori