Problem mit Datenbank ausgabe. Dringen Hilfe benotigt

  • Themenstarter Themenstarter sinusalpha3
  • Beginndatum Beginndatum
S

sinusalpha3

Hallo,

ich muss heute damit fertig werden. Spätestens Montag. Deswegen brauche ich eure Hilfe.

In einer Datenbank werden Datum, Schicht, Vorname, Nachname und ID gespeichert. Diese Datenbank dient zur koordienierung von Hilfskräften die bei uns Arbeiten. Aus dieser Datenbank soll eine ansehbare ansicht erstellt werden die dan per web applikation aufgerufen wird. Es werden also alle daten aus der Datenbank abgerufen. Die Schicht wird bei den jeweiligen feld mit einem X gekenzeichnet.

Das Programm funktioniert in den Grundfunktion einwandfrei. Es wird alles ausgegeben und angezeigt. Leider werden aber die X für die jeweilige schicht nicht ordentlich dargestellt. Das heist wenn sich 15 Leute für den 2010-06-12 melden und nur 3 für den 2010-06-13 werden die für den 13. zentriert angezeigt. das heist sie stehen nicht bei der richtigen person sondern bei einer anderen.

Ich poste mal eine vereinfachung des Quelltextes und ein mySQL dump.

PHP Seite:

PHP:
<html>
<head>

</head>
<body>

<tr>
<form action="" method="post" name="form" id="form">
  <p>Datum von :
    <input name="theDate_start" type="text" id="sel_start" value="<?php echo $_POST[theDate_start]; ?>" size="10" onClick="displayCalendar(document.forms[0].theDate_start,'yyyy-mm-dd',this)">
    <input type="submit" name="button2" id="button2" value="W&auml;hlen" />
  </p>
  </form>
  <tr>
  <p align="right">
  <?php 
  if ($_POST[theDate_start]) {
  
$datum = $_POST[theDate_start];
list ($jahr, $monat, $tag) = explode ("-", $datum);

$tstamp1 = mktime(date("H"),date("i"),date("s"),date($monat),date($tag)+1,date($jahr));
$tstamp2 = mktime(date("H"),date("i"),date("s"),date($monat),date($tag)+2,date($jahr));
$tstamp3 = mktime(date("H"),date("i"),date("s"),date($monat),date($tag)+3,date($jahr));
$tstamp4 = mktime(date("H"),date("i"),date("s"),date($monat),date($tag)+4,date($jahr));
$tstamp5 = mktime(date("H"),date("i"),date("s"),date($monat),date($tag)+5,date($jahr));
$tstamp6 = mktime(date("H"),date("i"),date("s"),date($monat),date($tag)+6,date($jahr));
$tstamp7 = mktime(date("H"),date("i"),date("s"),date($monat),date($tag)+7,date($jahr));

$adddatum1 = date("Y-m-d",$tstamp1); 
$adddatum2 = date("Y-m-d",$tstamp2); 
$adddatum3 = date("Y-m-d",$tstamp3); 
$adddatum4 = date("Y-m-d",$tstamp4); 
$adddatum5 = date("Y-m-d",$tstamp5); 
$adddatum6 = date("Y-m-d",$tstamp6); 
$adddatum7 = date("Y-m-d",$tstamp7); 
	}
?>
  </p>
<tr>
<tr> 
<tr>
  <table width="536" border="0" align="center">
  <tr>
    <td height="26">&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td><?php echo $_POST[theDate_start]; ?></td>
    <td><?php echo $adddatum1; ?></td>
    </tr>
  <tr>
    <td height="26"><table width="87" border="1">
      <tr>
        <td width="77" height="23">ID:</td>
      </tr>
    </table></td>
    <td><table width="72" border="1">
      <tr>
        <td width="62" height="23">Vorname:</td>
      </tr>
    </table></td>
    <td><table width="114" border="1">
      <tr>
        <td width="104" height="23">Nachname:</td>
      </tr>
    </table></td>
    <td><table width="120" border="1">
      <tr>
        <td width="39" height="23">FS:</td>
        <td width="30">SS:</td>
        <td width="29">NS:</td>
      </tr>
    </table></td>
    <td><table width="120" border="1">
      <tr>
        <td width="39">FS:</td>
        <td width="30">SS:</td>
        <td width="29">NS:</td>
      </tr>
    </table></td>
    </tr>
  <tr>        
    <td height="26"><table width="84" border="0"><?PHP 	
				include ("../includes/_config.php");
				$query = "SELECT distinct id, nachname,  vorname FROM eingabe where datum>='$_POST[theDate_start]' AND datum<='$adddatum7'";
				$result = mysql_query($query);
				while ($line = mysql_fetch_array($result)) { 
?>
        <tr>
          <td width="78" height="20"><?php echo $line[id]; ?></td>
        </tr>
        <?php } ?>
      </table></td>
    <td><table width="73" border="0">
    <?PHP 	
				include ("../includes/_config.php");
				$query = "SELECT distinct id, nachname,  vorname FROM eingabe where datum>='$_POST[theDate_start]' AND datum<='$adddatum7'";
				$result = mysql_query($query);
				while ($line = mysql_fetch_array($result)) { 
?>
        <tr>
          <td width="67" height="20"><?php echo $line[vorname]; ?></td>
        </tr>
<?php } ?>
      </table></td>
    <td><table width="113" border="0">
    <?PHP 	
				include ("../includes/_config.php");
				$query = "SELECT distinct id, nachname,  vorname FROM eingabe where datum>='$_POST[theDate_start]' AND datum<='$adddatum7'";
				$result = mysql_query($query);
				while ($line = mysql_fetch_array($result)) { 
				?>
      <tr>

        <td width="107" height="20"><?php echo $line[nachname]; ?> </td>
      </tr><?php } ?>
    </table></td>
    <td><table width="118" border="0">
      <tr>
        <?PHP 	

		$dat = date('Y-m-d', $_POST[theDate_start]);
		
				include ("../includes/_config.php");

				$query = "SELECT datum, schicht, if( (schicht like '%1.%' or schicht='egal'),'X','') as FS , if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, if( (schicht like '%3.%' or schicht='egal'),'X','') as NS FROM `eingabe` where datum='$_POST[theDate_start]'";
				$result = mysql_query($query);
				while ($line = mysql_fetch_array($result)) { 

?>
        <td width="52" height="20"><span class="Stil1">&nbsp;&nbsp;<?php echo $line[FS];?></span></td>
        <td width="28"><span class="Stil1"><?php echo $line[SS];?></span></td>
        <td width="24"><span class="Stil1"><?php echo $line[NS];?></span></td>
      </tr>
      <?php
	} 
	mysql_close();
	
?>
    </table></td>
    <td><table width="118" border="0">
      <?PHP 	
				include ("../includes/_config.php");
				$query = "SELECT datum, schicht, if( (schicht like '%1.%' or schicht='egal'),'X','') as FS, if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, if( (schicht like '%3.%' or schicht='egal'),'X','') as NS FROM `eingabe` where datum='$adddatum1'";
				$result = mysql_query($query);
				while ($line = mysql_fetch_array($result)) { 

?>
      <tr>
        <td width="52" height="20"><span class="Stil1">&nbsp;&nbsp; <?php echo $line[FS];?></span></td>
        <td width="28"><span class="Stil1"><?php echo $line[SS];?></span></td>
        <td width="24"><span class="Stil1"><?php echo $line[NS];?></span></td>
      </tr>
      <?php
	}
	mysql_close();
	
?>
    </table></td>
    </tr>
</table>
</tr>
</body>
</html>

SQL dump für euchz damit Ihr es mal bei euch Testen könnt. Name der Db ist "db679728-web".
Wenn ihr es Testet müsst Ihr bei der PHP Seite in dem Textfeld 2010-07-12 eingeben damit die Db abgerufen wird.

SQL:
-- phpMyAdmin SQL Dump
-- version 3.2.4
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Erstellungszeit: 23. Juli 2010 um 09:59
-- Server Version: 5.1.41
-- PHP-Version: 5.3.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Datenbank: `db679728-web`
--

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

--
-- Tabellenstruktur für Tabelle `eingabe`
--

CREATE TABLE IF NOT EXISTS `eingabe` (
  `id_a` int(100) NOT NULL AUTO_INCREMENT,
  `id` int(100) NOT NULL,
  `vorname` varchar(100) NOT NULL,
  `nachname` varchar(100) NOT NULL,
  `datum` date NOT NULL,
  `schicht` varchar(100) NOT NULL,
  `email` varchar(100) NOT NULL,
  `bevorzugt_email` varchar(11) NOT NULL,
  `bevorzugt_sms` varchar(11) NOT NULL,
  `tel` varchar(100) NOT NULL,
  `geschlecht` varchar(100) NOT NULL,
  PRIMARY KEY (`id_a`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=23 ;

--
-- Daten für Tabelle `eingabe`
--

INSERT INTO `eingabe` (`id_a`, `id`, `vorname`, `nachname`, `datum`, `schicht`, `email`, `bevorzugt_email`, `bevorzugt_sms`, `tel`, `geschlecht`) VALUES
(22, 4, 'User', 'Test', '2010-07-12', '1. Fruehschicht', 'user1@127.0.0.1', 'ja', 'nein', '', 'geeherter Herr'),
(21, 2, 'Franz', 'Harz', '2010-07-24', 'egal', 'test@gmx.de', 'ja', 'nein', '', 'geeherter Herr'),
(20, 0, 'Test', 'Test1', '2010-07-12', 'egal', '', '', '', '', ''),
(19, 2, 'Franz', 'Harz', '2010-07-13', '1. Fruehschicht', 'test@gmx.de', 'ja', 'nein', '', 'geeherter Herr');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Bitte wirklich felehends um eure Hilfe.
 
Zuletzt bearbeitet von einem Moderator:
Das Problem ist, dass du für den Folgetag eine neue Tabelle machst mit einer eigenen Abfrage und anderer Resultatmenge. Damit gibt es verscheibungen

ich baus mal kurz ein wenig um. gib mir etwas Zeit

Zudem solltest du deine _config-Datei am Anfang einmal laden und am Ende die DB schliessen. Nicht dauernd neu verbinden und trennen.
 
Wenn du mir helfen und das Problem lösen könntest wäre das super.

Ich habe schon 4 mal versucht die Tabelle neu zu bauen oder die abfragen anders zu platzieren.

Vielen dank im vorraus.
 
Die Abfrage hab ich jetzt mal zusammen...
SQL:
SELECT DISTINCT
	e.id,
	e.nachname,
	e.vorname,
	selectedDay.datum AS datum1,
	selectedDay.FS AS FS1,
	selectedDay.SS AS SS1,
	selectedDay.NS AS NS1,
	selectedNextDay.datum AS datum2,
	selectedNextDay.FS AS FS2,
	selectedNextDay.SS AS SS2,
	selectedNextDay.NS AS NS2
FROM  
	eingabe AS e  
	LEFT JOIN (SELECT 
					id,
				    datum, 
				    schicht, 
				    if( (schicht like '%1.%' or schicht='egal'),'X','') as FS , 
				    if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, 
				    if( (schicht like '%3.%' or schicht='egal'),'X','') as NS 
				FROM 
				    eingabe 
				WHERE 
				    datum='2010-07-12') AS selectedDay
		ON e.id = selectedDay.id
	LEFT JOIN (SELECT
					id, 
				    datum, 
				    schicht, 
				    if( (schicht like '%1.%' or schicht='egal'),'X','') as FS, 
				    if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, 
				    if( (schicht like '%3.%' or schicht='egal'),'X','') as NS 
				FROM eingabe 
				WHERE 
				    datum=DATE_ADD('2010-07-12', INTERVAL 1 DAY)) AS selectedNextDay
	 ON e.id = selectedNextDay.id
WHERE
	selectedDay.datum IS NOT NULL
	OR selectedNextDay.datum IS NOT NULL
 
Zuletzt bearbeitet von einem Moderator:
Ich trag nun die sql abfrage am anfang der tabele ein und schliese diese am ende. alle anderen sql codes nehme ich raus. Die php codes lasse ich so wie sie waren.

Stimmts?



Vielen Dank
 
Oder du kürzt alles ab
etwa so
PHP:
<?php 
//Config-File einbinden, darin wird auch die DB-Connection hergestellt
include('connect.php');
?>
<html>
<head>

</head>
<body>

<form action="" method="post" name="form" id="form">
  <p>Datum von :
    <input name="theDate_start" type="text" id="sel_start" value="<?php echo $_POST[theDate_start]; ?>" size="10" onClick="displayCalendar(document.forms[0].theDate_start,'yyyy-mm-dd',this)">
    <input type="submit" name="button2" id="button2" value="W&auml;hlen" />
  </p>
</form>
<?php


  if ($_POST[theDate_start]) {
    $datum = $_POST[theDate_start];
    
    $date = strtotime($datum);
    $date1 = strtotime('+1 day', $date);
    
    $datumSqlString = mysql_escape_string($_POST[theDate_start]);
    $sql = 
"SELECT DISTINCT
    e.id,
    e.nachname,
    e.vorname,
    selectedDay.datum AS datum1,
    selectedDay.FS AS FS1,
    selectedDay.SS AS SS1,
    selectedDay.NS AS NS1,
    selectedNextDay.datum AS datum2,
    selectedNextDay.FS AS FS2,
    selectedNextDay.SS AS SS2,
    selectedNextDay.NS AS NS2
FROM  
    eingabe AS e  
    LEFT JOIN (SELECT 
                    id,
                    datum, 
                    schicht, 
                    if( (schicht like '%1.%' or schicht='egal'),'X','') as FS , 
                    if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, 
                    if( (schicht like '%3.%' or schicht='egal'),'X','') as NS 
                FROM 
                    eingabe 
                WHERE 
                    datum='{$datumSqlString}') AS selectedDay
        ON e.id = selectedDay.id
    LEFT JOIN (SELECT
                    id, 
                    datum, 
                    schicht, 
                    if( (schicht like '%1.%' or schicht='egal'),'X','') as FS, 
                    if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, 
                    if( (schicht like '%3.%' or schicht='egal'),'X','') as NS 
                FROM eingabe 
                WHERE 
                    datum=DATE_ADD('{$datumSqlString}', INTERVAL 1 DAY)) AS selectedNextDay
     ON e.id = selectedNextDay.id
WHERE
    selectedDay.datum IS NOT NULL
    OR selectedNextDay.datum IS NOT NULL";
  
    $result = mysql_query($sql);
?>

<table>
    <tr>
        <th colspan="3" />
        <th colspan="3"><?php echo date('j.n.Y', $date); ?></th>
        <th colspan="3"><?php echo date('j.n.Y', $date1); ?></th>
    </tr>
    <tr>
        <th>ID:</th>
        <th>Vorname:</th>
        <th>Nachname:</th>        
        <th>FS:</th>
        <th>SS:</th>
        <th>NS:</th>
        <th>FS:</th>
        <th>SS:</th>
        <th>NS:</th>
    </tr>
<?php    
    
    while($row = mysql_fetch_array($result)){
        echo '<tr>';
        echo "<td>{$row['id']}</td>";  
        echo "<td>{$row['vorname']}</td>";  
        echo "<td>{$row['nachname']}</td>";  
        echo "<td>{$row['FS1']}</td>";  
        echo "<td>{$row['SS1']}</td>";  
        echo "<td>{$row['NS1']}</td>";  
        echo "<td>{$row['FS2']}</td>";  
        echo "<td>{$row['SS2']}</td>";  
        echo "<td>{$row['NS3']}</td>";
        echo '</tr>';  
    }
    echo '</table>';
}
    
mysql_close();

?>
</body>
</html>
 
Vielen Dank das du mir geholfen hast.

Dennoch muss ich dich noch einmal (hoffentlich auch das letzte mal weil es mir langsam peinlich ist) um hilfe bitten.

ich will natürlich nicht nur 2 tage auswählen sondern eine woche. Also Montag bis Montag.

nun hab ich schon versucht das umzusetzen aber er gibt mir ein Fehler aus was an dem SQL befehl liegt.

hier mal mein abgeänderte SQL befehl.

SQL:
SELECT DISTINCT
    e.id,
    e.nachname,
    e.vorname,
    selectedDay.datum AS datum1,
    selectedDay.FS AS FS1,
    selectedDay.SS AS SS1,
    selectedDay.NS AS NS1,
	
    selectedNextDay.datum AS datum2,
    selectedNextDay.FS AS FS2,
    selectedNextDay.SS AS SS2,
    selectedNextDay.NS AS NS2,
	
	selectedNextDay.datum AS datum3,
    selectedNextDay.FS AS FS3,
    selectedNextDay.SS AS SS3,
    selectedNextDay.NS AS NS3,
		
	selectedNextDay.datum AS datum4,
    selectedNextDay.FS AS FS4,
    selectedNextDay.SS AS SS4,
    selectedNextDay.NS AS NS4,
		
	selectedNextDay.datum AS datum5,
    selectedNextDay.FS AS FS5,
    selectedNextDay.SS AS SS5,
    selectedNextDay.NS AS NS5,
		
	selectedNextDay.datum AS datum6,
    selectedNextDay.FS AS FS6,
    selectedNextDay.SS AS SS6,
    selectedNextDay.NS AS NS6,
		
	selectedNextDay.datum AS datum7,
    selectedNextDay.FS AS FS7,
    selectedNextDay.SS AS SS7,
    selectedNextDay.NS AS NS7,
FROM  
    eingabe AS e  
    LEFT JOIN (SELECT 
                    id,
                    datum, 
                    schicht, 
                    if( (schicht like '%1.%' or schicht='egal'),'X','') as FS , 
                    if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, 
                    if( (schicht like '%3.%' or schicht='egal'),'X','') as NS 
                FROM 
                    eingabe 
                WHERE 
                    datum='{$datumSqlString}') AS selectedDay
        ON e.id = selectedDay.id
    LEFT JOIN (SELECT
                    id, 
                    datum, 
                    schicht, 
                    if( (schicht like '%1.%' or schicht='egal'),'X','') as FS, 
                    if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, 
                    if( (schicht like '%3.%' or schicht='egal'),'X','') as NS 
                FROM eingabe 
                WHERE 
                    datum=DATE_ADD('{$datumSqlString}', INTERVAL 1 DAY)) AS selectedNextDay
     ON e.id = selectedNextDay.id
WHERE
    selectedDay.datum IS NOT NULL
    OR selectedNextDay.datum IS NOT NULL";
  
    $result = mysql_query($sql);

was ist falsch?
 
Zuletzt bearbeitet von einem Moderator:
Du musst natürlich die entsprechenden Quellen im FROM-Teil generieren

SQL:
SELECT DISTINCT
    e.id,
    e.nachname,
    e.vorname,
    day1.datum AS datum1,
    day1.FS AS FS1,
    day1.SS AS SS1,
    day1.NS AS NS1,
    day2.datum AS datum2,
    day2.FS AS FS2,
    day2.SS AS SS2,
    day2.NS AS NS2,
    day3.datum AS datum3,
    day3.FS AS FS3,
    day3.SS AS SS3,
    day3.NS AS NS3,
    day4.datum AS datum4,
    day4.FS AS FS4,
    day4.SS AS SS4,
    day4.NS AS NS4,
    day5.datum AS datum5,
    day5.FS AS FS5,
    day5.SS AS SS5,
    day5.NS AS NS5,
    day6.datum AS datum6,
    day6.FS AS FS6,
    day6.SS AS SS6,
    day6.NS AS NS6,
    day7.datum AS datum7,
    day7.FS AS FS7,
    day7.SS AS SS7,
    day7.NS AS NS7
FROM  
    eingabe AS e  
    LEFT JOIN (SELECT 
                    id,
                    datum, 
                    schicht, 
                    if( (schicht like '%1.%' or schicht='egal'),'X','') as FS , 
                    if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, 
                    if( (schicht like '%3.%' or schicht='egal'),'X','') as NS 
                FROM 
                    eingabe 
                WHERE 
                    datum='{$datumSqlString}') AS day1
        ON e.id = day1.id
    LEFT JOIN (SELECT
                    id, 
                    datum, 
                    schicht, 
                    if( (schicht like '%1.%' or schicht='egal'),'X','') as FS, 
                    if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, 
                    if( (schicht like '%3.%' or schicht='egal'),'X','') as NS 
                FROM eingabe 
                WHERE 
                    datum=DATE_ADD('{$datumSqlString}', INTERVAL 1 DAY)) AS day2
     ON e.id = day2.id
    LEFT JOIN (SELECT
                    id, 
                    datum, 
                    schicht, 
                    if( (schicht like '%1.%' or schicht='egal'),'X','') as FS, 
                    if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, 
                    if( (schicht like '%3.%' or schicht='egal'),'X','') as NS 
                FROM eingabe 
                WHERE 
                    datum=DATE_ADD('{$datumSqlString}', INTERVAL 2 DAY)) AS day3
     ON e.id = day3.id
    LEFT JOIN (SELECT
                    id, 
                    datum, 
                    schicht, 
                    if( (schicht like '%1.%' or schicht='egal'),'X','') as FS, 
                    if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, 
                    if( (schicht like '%3.%' or schicht='egal'),'X','') as NS 
                FROM eingabe 
                WHERE 
                    datum=DATE_ADD('{$datumSqlString}', INTERVAL 3 DAY)) AS day4
     ON e.id = day4.id
    LEFT JOIN (SELECT
                    id, 
                    datum, 
                    schicht, 
                    if( (schicht like '%1.%' or schicht='egal'),'X','') as FS, 
                    if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, 
                    if( (schicht like '%3.%' or schicht='egal'),'X','') as NS 
                FROM eingabe 
                WHERE 
                    datum=DATE_ADD('{$datumSqlString}', INTERVAL 4 DAY)) AS day5
     ON e.id = day5.id
    LEFT JOIN (SELECT
                    id, 
                    datum, 
                    schicht, 
                    if( (schicht like '%1.%' or schicht='egal'),'X','') as FS, 
                    if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, 
                    if( (schicht like '%3.%' or schicht='egal'),'X','') as NS 
                FROM eingabe 
                WHERE 
                    datum=DATE_ADD('{$datumSqlString}', INTERVAL 5 DAY)) AS day6
     ON e.id = day6.id
    LEFT JOIN (SELECT
                    id, 
                    datum, 
                    schicht, 
                    if( (schicht like '%1.%' or schicht='egal'),'X','') as FS, 
                    if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, 
                    if( (schicht like '%3.%' or schicht='egal'),'X','') as NS 
                FROM eingabe 
                WHERE 
                    datum=DATE_ADD('{$datumSqlString}', INTERVAL 6 DAY)) AS day7
     ON e.id = day7.id
WHERE
    day1.datum IS NOT NULL
    OR day2.datum IS NOT NULL
    OR day3.datum IS NOT NULL    
    OR day4.datum IS NOT NULL
    OR day5.datum IS NOT NULL
    OR day6.datum IS NOT NULL
    OR day7.datum IS NOT NULL

Ich verscuh mal ein krüzeres anders aufgebautes Query....
 
Zuletzt bearbeitet von einem Moderator:
Super es geht. Es geht. Ich geh kaputt es geht. Ein ganzen Monat lang nichts und dan kommst du.
Oh Gott glucks gefühle durch strömen mich.

Vielen lieben Dank.

P.S.: Ist es möglich zum Datum den Wochentag anzeigen zu lassen? Ich finde nur javascript codes die das irgendwie machen können.

Vielen dank nochmal
 
Hab ein mMn besseres und einfacheres SQL
SQL:
SELECT
	id,
	@d1 AS datum1,
	MAX(IF(datum = @d1, FS, NULL)) AS FS1,
	MAX(IF(datum = @d1, SS, NULL)) AS SS1,
	MAX(IF(datum = @d1, NS, NULL)) AS NS1,
	@d2 AS datum2,
	MAX(IF(datum = @d2, FS, NULL)) AS FS2,
	MAX(IF(datum = @d2, SS, NULL)) AS SS2,
	MAX(IF(datum = @d2, NS, NULL)) AS NS2,	
	@d3 AS datum3,
	MAX(IF(datum = @d3, FS, NULL)) AS FS3,
	MAX(IF(datum = @d3, SS, NULL)) AS SS3,
	MAX(IF(datum = @d3, NS, NULL)) AS NS3,
	@d4 AS datum4,
	MAX(IF(datum = @d4, FS, NULL)) AS FS4,
	MAX(IF(datum = @d4, SS, NULL)) AS SS4,
	MAX(IF(datum = @d4, NS, NULL)) AS NS4,
	@d5 AS datum5,
	MAX(IF(datum = @d5, FS, NULL)) AS FS5,
	MAX(IF(datum = @d5, SS, NULL)) AS SS5,
	MAX(IF(datum = @d5, NS, NULL)) AS NS5,
	@d6 AS datum6,
	MAX(IF(datum = @d6, FS, NULL)) AS FS6,
	MAX(IF(datum = @d6, SS, NULL)) AS SS6,
	MAX(IF(datum = @d6, NS, NULL)) AS NS6,
	@d7 AS datum7,
	MAX(IF(datum = @d7, FS, NULL)) AS FS7,
	MAX(IF(datum = @d7, SS, NULL)) AS SS7,
	MAX(IF(datum = @d7, NS, NULL)) AS NS7
FROM
	(	SELECT
			@d1 := '{$datumSqlString}',
			@d2 := DATE_ADD(@d1, INTERVAL 1 DAY),
			@d3 := DATE_ADD(@d1, INTERVAL 2 DAY),
			@d4 := DATE_ADD(@d1, INTERVAL 3 DAY),
			@d5 := DATE_ADD(@d1, INTERVAL 4 DAY),
			@d6 := DATE_ADD(@d1, INTERVAL 5 DAY),
			@d7 := DATE_ADD(@d1, INTERVAL 6 DAY)
	) AS vars,
	(
		SELECT 
			id,
		    datum, 
		    schicht, 
		    if( (schicht like '%1.%' or schicht='egal'),'X','') as FS , 
		    if( (schicht like '%2.%' or schicht='egal'),'X','') as SS, 
		    if( (schicht like '%3.%' or schicht='egal'),'X','') as NS 
		FROM 
		    eingabe 
		WHERE 
		    datum BETWEEN @d1 AND @d7
	) AS d
GROUP BY id

@d1 etc. sind Variablen die einmal mit den Wochentagsdatums gesetzt werden. Danach kann an im ganzen Query drauf zugreiffen
Hier werden sie gesetzt
SQL:
SELECT
			@d1 := '2010-07-12',
			@d2 := DATE_ADD(@d1, INTERVAL 1 DAY),
			@d3 := DATE_ADD(@d1, INTERVAL 2 DAY),
			@d4 := DATE_ADD(@d1, INTERVAL 3 DAY),
			@d5 := DATE_ADD(@d1, INTERVAL 4 DAY),
			@d6 := DATE_ADD(@d1, INTERVAL 5 DAY),
			@d7 := DATE_ADD(@d1, INTERVAL 6 DAY)
 
Zuletzt bearbeitet von einem Moderator:
Zurück