2017-01-28 6 views
0

Ich habe zwei Tabellen.Ergebnisse von zwei verschiedenen Tabellen erhalten mysql

Tabelle Lager

fecha  | tarifa 

2017-01-06 500 
2017-01-07 500 
2017-01-08 500 

Tabelle Promotions

fecha  | percent 

2017-01-07 0.10 
2017-01-08 0.10 
2017-01-07 0.15 
2017-01-08 0.15 

und ich brauche diese während mysql Abfrage zu erhalten:

fecha  | tarifa | percent 

2017-01-06 500  0 
2017-01-07 500  0.10 
2017-01-08 500  0.10 
2017-01-06 500  0 
2017-01-07 500  0.15 
2017-01-08 500  0.15 

Danke !!! mit dem Ergebnis der Abfrage

aktualisiert

ich brauche, dass dieses Array erstellen.

Array 
(
    [1] => Array 
     (
      [0] => Array 
       (
        [fecha] => 2017-01-06 
        [tstandard]=>500 
        [porcentaje] => 0.00 
       ) 

      [1] => Array 
       (
        [fecha] => 2017-01-07 
        [tstandard]=>500 
        [porcentaje] => 0.10 
       ) 

      [2] => Array 
       (
        [fecha] => 2017-01-08 
        [tstandard]=>500 
        [porcentaje] => 0.10 
       ) 
     ) 

    [2] => Array 
     (
      [0] => Array 
       (
        [fecha] => 2017-01-06 
        [tstandard]=>500 
        [porcentaje] => 0.00 
       ) 

      [1] => Array 
       (
        [fecha] => 2017-01-07 
        [tstandard]=>500 
        [porcentaje] => 0.15 
       ) 

      [2] => Array 
       (
        [fecha] => 2017-01-08 
        [tstandard]=>500 
        [porcentaje] => 0.15 

       ) 
     ) 
) 

Ich habe das Array getan, aber ohne die tstandard eines jeden Tages

+0

Verwenden 'LEFT JOIN' zwei Tabellen zu verbinden, wenn einer von ihnen nicht enthalten könnte Zeilen, die mit dem anderen übereinstimmen. – Barmar

+0

SO ist kein kostenloser Codierdienst. Sie müssen versuchen, das Problem selbst zu lösen. Wenn es nicht funktioniert, poste, was du versucht hast, und wir helfen dir, es zu beheben. – Barmar

Antwort

1

Sie left outer join verwenden können, um die gewünschte Ausgabe zu erhalten, z.B .:

SELECT s.fecha, s.tarifa, IFNULL(p.percent, 0) 
FROM stock s LEFT JOIN promotions p ON s.fecha = p.fecha; 

Hier ist die SQL Fiddle.

aktualisieren

Wenn Sie die Ausgabe mit Daten einschränken möchten, können Sie die folgenden Abfrage verwenden:

SELECT s.fecha, s.tarifa, IFNULL(p.percent, 0) 
FROM stock s LEFT JOIN promotions p ON s.fecha = p.fecha 
WHERE s.fecha BETWEEN $checkin AND $checkout; 
+0

gibt es eine wirklich gute Lösung, aber wie kann ich tun, wenn der Gast die Daten auswählt. Der Tischbestand ist eine Tabelle, die jeden Tag des Jahres enthält. Es gibt ein Hotel Reservierungssystem. Die Tischaktion enthält nur die Rabatttage. Wenn ich versuche, linken äußeren Join zu verwenden, und verwenden Sie auswählen .... wo fecha> = $ checkin und fecha <$ checkout, das Ergebnis ist Spalte fecha ist mehrdeutig –

+0

ohhh, du bist mein Gott. jeje. Kann ich die letzte Frage stellen? Wie kann ich erreichen, dass ein Array für die Werbung erhalten wird, und jedes einzelne enthält alle Tage, die konsultiert werden. zum Beispiel ein Array, das drei Tage (6, 7, 8, - der Tag 6, 0,00 Prozent - und die anderen Tage 0,10 Prozent), und andere Array enthalten auch die drei Tage (6,7,8 - der Tag 6 , 0,00 Prozent, und die anderen Tage 0,15 Prozent). Soll das mit PHP gemacht werden? –

+0

die las Tabelle meiner Abfrage hat das Ergebnis, dass ich erhalten möchte. –

Verwandte Themen