sql бір кестеде екі өріске қосылады

Менде екі адам бар тапсырыс парағы бар - адам ретінде person_1 жолын қайтарғым келеді, адам_2 жаңа жолда, бірақ адамның жеке идентификаторымен

Бұл менің алдымызда, бірақ брондау туралы мәліметтерді қабылдамайды

 SELECT people.* FROM (
    (select booking.person_1 as id from booking)
    union ALL
    (select booking.person_2 as id from booking)
) as peopleids
join people on people.id = peopleids.id;

менің құрылымым

CREATE TABLE IF NOT EXISTS `booking` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `slot` enum('morning_drive','afternoon_loop','return_drive') NOT NULL,
  `type` enum('911','vintage_911') NOT NULL,
  `car` int(11) NOT NULL,
  `person_1` int(11) DEFAULT NULL,
  `person_2` int(11) DEFAULT NULL,
  `dated` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;


CREATE TABLE IF NOT EXISTS `people` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(50) NOT NULL,
  `last_name` varchar(50) NOT NULL,
  `organisation` varchar(100) NOT NULL,
  `event_date` date NOT NULL,
  `wave` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

person.first_name, person.last_name, person.organisation, booking.dated, person.car, person.slot сияқты нәтижелер жиынтығын қалай аламын дегенге қатысты кез-келген идеялар. екі өріс бар екпінмен күресіп, оларды бір тізімге енгізуге мәжбүрледі

осыған қызығушылық танытқан кез келген адам үшін жаңарту және 3-кестеге қосылу

Менің соңғы сұранысым PHP vars арқылы белгілі бір күндер мен ұяшықтарды тартып алуға және үшінші кестеге қосылуға мүмкіндік береді

    SELECT peopleids.id, 
       peopleids.car, 
       cars.nr, 
       p.first_name, 
       p.last_name, 
       p.organisation, 
       p.event_date, 
       p.wave 
FROM (SELECT booking.car, booking.person_1 as id FROM booking WHERE booking.dated = '".$date."' AND booking.`slot` =  '".$slot."' 
        union ALL SELECT booking.car, booking.person_2 as id FROM booking  WHERE booking.dated = '".$date."' AND booking.`slot` = '".$slot."' 
     ) as peopleids
LEFT JOIN people p ON p.id = peopleids.id  LEFT JOIN cars on cars.id = peopleids.car;
2
бұл жұмыс істейді .. бірақ маған тиісті брондау туралы мәліметтерді алуға мүмкіндік бермейді, неге жақсы жол?
қосылды автор Chris Mccabe, көзі
people.id = peopleids.id адамдарына қосылыңыз?
қосылды автор StuartLC, көзі
сіз кәсіподақтарыңыздың екеуінде де қалған өрістерді таңдауыңыз керек (booking.person1, booking.someotherfield, booking.bookingdate таңдаңыз)
қосылды автор StuartLC, көзі
@Chris Mccabe: менің шешімімді сынап көріңіз
қосылды автор sll, көзі

2 жауаптар

 SELECT 
       ag.id, 
       p.first_name, 
       p.last_name, 
       p.organisation, 
       p.event_date, 
       p.wave
 FROM (
      SELECT booking.person_1 as id, booking.Car as car FROM booking
      union ALL
      SELECT booking.person_2 as id, booking.Car as car FROM booking
     ) as ag
JOIN people p ON people.id = ag.id;
INNER | LEFT JOIN Cars c ON c.ID = ag.car
1
қосылды
Мені брондау.car қайтару керек ... және автомобильдер үстеліне қосылыңыз (мен білмеймін, менің бұл мәселе туралы ешқашан айтқан жоқ, бірақ менің қосылуға оңай еді, бірақ менің ойымша)
қосылды автор Chris Mccabe, көзі
Мен екі кестенің қалай байланысты екені және қайтып оралғыңыз келетіні туралы білмеймін, мен өз сұрағымды жаңарттым, мүмкін, бұл сізге қажет нәрсеге қол жеткізудің кейбір көрсеткіштерін береді
қосылды автор sll, көзі
    select people.first_name as firstname,
            people.last_name as lastname,
            people.НЕМЕСЕganisation,
            booking.dated,
            booking.car,
            booking.slot from booking
left join people on booking.person_1 = people.id

НЕМЕСЕ

select people.first_name as firstname,
            people.last_name as lastname,
            people.НЕМЕСЕganisation,
            booking.dated,
            booking.car,
            booking.slot
 from booking
left join people on booking.person_1 = people.id НЕМЕСЕ booking.person_2 = people.id

тексеріңіз ... егер сізге әлі де көмек керек болса, сізге көмектеседі

0
қосылды