tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
756
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    jomafi jomafi ist offline Rookie
    Registriert seit
    Feb 2011
    Beiträge
    7
    Hallo,

    ich habe folgendes Problem, bzw. ich finde keinen funktionierenden Weg.

    Die Datenbank ist folgendermaßen aufgebaut:

    --
    -- Tabellenstruktur für Tabelle `products`
    --

    CREATE TABLE IF NOT EXISTS `products` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `service_a` int(1) NOT NULL,
    `service_b` int(1) NOT NULL,
    `service_c` int(1) NOT NULL,
    `service_d` int(1) NOT NULL,
    `service_e` int(1) NOT NULL,
    `service_f` int(1) NOT NULL,
    `service_g` int(1) NOT NULL,
    `service_h` int(1) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;


    --
    -- Tabellenstruktur für Tabelle `usettings`
    --

    CREATE TABLE IF NOT EXISTS `usettings` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `user_id` int(11) NOT NULL,
    `service_a1` int(1) NOT NULL DEFAULT '1',
    `service_a2` int(1) NOT NULL DEFAULT '1',
    `service_b1` int(1) NOT NULL DEFAULT '1',
    `service_b2` int(1) NOT NULL DEFAULT '1',
    `service_c1` int(1) NOT NULL DEFAULT '1',
    `service_c2` int(1) NOT NULL DEFAULT '1',
    `service_d1` int(1) NOT NULL DEFAULT '1',
    `service_d2` int(1) NOT NULL DEFAULT '1',
    `service_e1` int(1) NOT NULL DEFAULT '1',
    `service_e2` int(1) NOT NULL DEFAULT '1',
    `service_f1` int(1) NOT NULL DEFAULT '1',
    `service_f2` int(1) NOT NULL DEFAULT '1',
    `service_g1` int(1) NOT NULL DEFAULT '1',
    `service_g2` int(1) NOT NULL DEFAULT '1',
    `service_h1` int(1) NOT NULL DEFAULT '1',
    `service_h2` int(1) NOT NULL DEFAULT '1',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


    ich möchte eine SQL-Abfrage machen, welche mir nur die Boolesche Werte (Standard sind die Bits vom usettings true) "zeilenweise" die mySQL Daten in Tabelle products anzeigt.
    Geändert von jomafi (18.02.11 um 23:10 Uhr)
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Was willst du genau angezeigt haben? Mach mal ein kleines Datenbeispiel, dann versteh ev auch ich alter DB-Bastler was du haben willst
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    jomafi jomafi ist offline Rookie
    Registriert seit
    Feb 2011
    Beiträge
    7
    Guten Morgen,

    Erst mal danke für die Antwort!

    Zitat Zitat von yaslaw Beitrag anzeigen
    Was willst du genau angezeigt haben? Mach mal ein kleines Datenbeispiel, dann versteh ev auch ich alter DB-Bastler was du haben willst
    Hier gibt es schon mal eine umfangreiche Demo: http://newspulse.cnn.com/
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Und was hat diese CNN-Seite mit deinen Tabellen zu tun?
    Ich gebs auf - ich will ja eigentlich helfen, doch zum Rätsel raten habe ich keine Lust.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    jomafi jomafi ist offline Rookie
    Registriert seit
    Feb 2011
    Beiträge
    7
    @yaslaw Bitte nicht ärgern, sonst werden aus einer Falte zwei?

    ich weiß nicht wonach ich suchen soll, weil ich mein Problem nicht so einfach beschreiben kann

    ich möchte mir gerne aus einer Datenbank alle Werte ausgeben lassen, deren Status 1 gesetzt wurde.
    Geändert von jomafi (19.02.11 um 11:15 Uhr)
     

  6. #6
    tequila slammer tequila slammer ist offline Mitglied Gold
    Registriert seit
    Aug 2006
    Beiträge
    204
    Versuche es doch mal mit dem Select-Befehl und der Where Bedingung.
     

  7. #7
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Code sql:
    1
    
    SELECT * FROM TABLE WHERE STATUS=1
    Aber ich seh bei deinen Tabellen kein Feld Status. Haben deine 2 Tabellen irgend ein Zusammenhang? Wenn ja, welchen?
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  8. #8
    jomafi jomafi ist offline Rookie
    Registriert seit
    Feb 2011
    Beiträge
    7
    Danke das du auf meine Frage geantwortet hast

    Meine SQL-Abfrage sieht so aus:

    PHP-Code:
           public function getProducts($uname)
          {
              global 
    $db;         
              
    $today date("Y/n/j"time());
              
    $current_month date("n"$this->time);
              
    $current_year date("Y"$this->time);
              
    $current_month_text date("F Y"$this->time);
              
    $total_days_of_current_month date("t"$this->time);
              
              
    $order "id DESC";
              
    $sql "SELECT DISTINCT p.*, b.*, u.*, DATE_FORMAT(p.date, '%d.%m.%Y') as created," 
              
    "\n DATE_FORMAT(date_start,'".$this->short_date."') AS sdate," 
              
    "\n DATE_FORMAT(time_start,'%H:%i') AS stime," 
              
    "\n DATE_FORMAT(date_end,'".$this->short_date."') AS edate," 
              
    "\n DATE_FORMAT(time_end,'%H:%i') AS etime" 
              
    "\n FROM products AS p" 
              
    "\n LEFT JOIN payments AS b ON p.id = b.product_id"
              
    "\n LEFT JOIN usersettings AS u ON u.uid = '".$uname."'"
              
    "\n WHERE date_start BETWEEN  '$current_year/$current_month/01'"
              
    " \n AND '$current_year/$current_month/$total_days_of_current_month'"
              
    "\n AND p.approved= 'yes'"
              
    "\n AND p.active = '1'"
              
    "\n AND b.status = '1'"
              
    "\n AND u.budget_a = '1'"
              
    "\n AND u.budget_b = '1'"
              
    "\n AND u.budget_c = '1'"
              
    "\n AND u.budget_d = '1'"
              
    "\n AND u.budget_d = '1'"
              
    "\n AND u.budget_f = '1'"
              
    "\n AND u.budget_g = '1'"
              
    "\n AND u.budget_h = '1'"
              
    "\n AND u.gebiet_a = '1'"
              
    "\n AND u.gebiet_b = '1'"
              
    "\n AND u.gebiet_c = '1'"
              
    "\n AND u.gebiet_d = '1'"
              
    "\n AND u.gebiet_e = '1'"
              
    "\n AND u.gebiet_f = '1'"
              
    "\n AND u.gebiet_g = '1'"
              
    "\n AND u.gebiet_h = '1'"
              
    "\n AND u.gebiet_i = '1'"
              
    "\n AND u.gebiet_j = '1'"
              
    "\n AND u.gebiet_k = '1'"
              
    "\n AND u.gebiet_l = '1'"
              
    "\n AND u.gebiet_m = '1'"
              
    "\n AND u.gebiet_n = '1'"
              
    "\n AND u.gebiet_o = '1'"
              
    "\n AND u.gebiet_p = '1'"
              
    "\n AND u.service_a = '1'"
              
    "\n AND u.service_b = '1'"
              
    "\n AND u.service_c = '1'"
              
    "\n AND u.service_d = '1'"
              
    "\n AND u.service_e = '1'"
              
    "\n AND u.service_f = '1'"
              
    "\n AND u.service_g = '1'"
              
    "\n AND u.service_h = '1'"
              
    "\n AND u.service_i = '1'"
              
    "\n AND u.service_j = '1'"
              
    "\n AND u.service_k = '1'"
              
    "\n AND u.service_l = '1'"
              
    "\n AND u.service_n = '1'"
              
    "\n AND u.service_m = '1'"
              
    "\n AND u.service_o = '1'"
              
    "\n AND u.service_p = '1'"
              
    "\n AND u.service_q = '1'"
              
    "\n AND u.service_r = '1'"
              
    "\n AND u.service_s = '1'"
              
    "\n AND u.service_t = '1'"
              
    "\n AND u.service_u = '1'"
              
    "\n AND u.service_v = '1'"
              
    "\n AND u.service_w = '1'"
              
    "\n AND u.service_y = '1'"
              
    "\n AND u.service_z = '1'"
              
    "\n AND u.service_aa = '1'"
              
    "\n AND u.service_bb = '1'"
              
    "\n AND u.service_cc = '1'"
              
    "\n AND u.service_dd = '1'"
              
    "\n AND u.service_ee = '1'"
              
    "\n AND u.service_ff = '1'"
              
    "\n AND u.service_gg = '1'"
              
    "\n AND u.service_hh = '1'"
              
    "\n AND u.service_ii = '1'"
              
    "\n AND u.service_jj = '1'"
              
    "\n AND u.service_kk = '1'"
              
    "\n AND u.service_ll = '1'"
              
    "\n AND u.service_nn = '1'"
              
    "\n AND u.service_mm = '1'"
              
    "\n AND u.service_oo = '1'"
              
    "\n AND u.service_pp = '1'"
              
    "\n AND u.service_qq = '1'"
              
    "\n AND u.service_rr = '1'"
              
    "\n AND u.service_ss = '1'"
              
    "\n AND u.service_tt = '1'"
              
    "\n AND u.service_uu = '1'"
              
    "\n AND u.service_vv = '1'"
              
    "\n AND u.service_ww = '1'"
              
    "\n AND u.service_yy = '1'"
              
    "\n AND u.service_zz = '1'"  
              
    "\n AND u.service_aaa = '1'"
              
    "\n AND u.service_bbb = '1'"
              
    "\n AND u.service_ccc = '1'"
              
    "\n AND u.service_ddd = '1'"
              
    "\n AND u.service_eee = '1'"
              
    "\n AND u.service_fff = '1'"
              
    "\n AND u.service_ggg = '1'"
              
    "\n AND u.service_hhh = '1'"
              
    "\n AND u.service_iii = '1'"
              
    "\n AND u.service_jjj = '1'"
              
    "\n AND u.service_kkk = '1'"
              
    "\n AND u.service_lll = '1'"
              
    "\n AND u.service_nnn = '1'"
              
    "\n AND u.service_mmm = '1'"
              
    "\n AND u.service_ooo = '1'"
              
    "\n AND u.service_ppp = '1'"
              
    "\n AND u.service_qqq = '1'"
              
    "\n ORDER BY " $order;
              
    $row $db->fetch_all($sql);
              
              return 
    $row;

          } 
    Irgendwie scheint das nicht zu funktionieren
    Geändert von jomafi (19.02.11 um 21:51 Uhr)
     

  9. #9
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Schön, ein SQL dass alle Felder auf 1 prüft. Wenn ich verstehen würde was du haben willst, würde ich ev. sehen was da falsch ist.
    Was ich auf die schnelle sehe, ist dass du die Tabelle usersettings nirgens mit products oder payments verknüft hast.
    Nebenbei vergleichst du deine Felder die als int abgelegt sind mit einem String. nimm die ' bei den Staties weg, denn wu willst ein Zahlenvergleich.
    Zudem hat u.uid = '.$uname.' nix im JOIN-Bereich verloren. Das ist eine WHERE-Bedinung.

    Also ich fasse mal zusammen was du da hast.
    Du verknüpst products mit payments. Dieses kombinierst du lose mit den usersettings des users sofern in den settings alle Staties auf 1 sind.

    ------ ich glaub, langsam versteh ich halbwegs was du suchst.
    Der user hat eine Setting-Tabelle in die viele Statis mit 0 oder 1 eingetragen sind. Nun suchst du alle Produkte die diesem Schlüssel entsprechen.
    Annahme meinerseits: Settingfelder die auf 0 sind, bedeuten nicht, dass dass das Produkt dort auch auf 0 sein muss. Aber wenn das Setting auf 1 ist, dann muss das Produkt dort ach eine 1 haben.
    Also das Lochkarten-System. Wo in der Setting-Karte ein Loch ist, muss im Produkt ebenfalls ein Loch sein.

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    SELECT
        p.*
    FROM
        products AS p,
        usersettings AS u
    WHERE
        u.uid = '{$uname}'
        --Mit dem Vergleich 'Grösser als' erreiche ich ,dass wenn u.service_a 0 ist, es egal ist 
        --ob p.service_a 0 oder 1 ist. Wenn aber u.service_a eine 1 ist, dann muss p.service_a 
        --ebenfalls eine 1 sein
        AND p.service_a >= u.service_a
        AND p.service_b >= u.service_b
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  10. #10
    jomafi jomafi ist offline Rookie
    Registriert seit
    Feb 2011
    Beiträge
    7
    Das hast du echt schön ausgedrückt, genau so ist es gemeint

    Der user hat eine Setting-Tabelle mit 70 SQL Strings (anpassbare Statis mit 0 oder 1) und die Products-Tabelle hat 7 SQL Strings (a, b, c, d, e, f und g)

    muß ich die Usersettings-Tabelle, mit allen Spalte der Products-Tabelle a, b, c, d, e, f und g vergleichen.

    Gibt es eine einfache Methode, wie Array in SQL? (Array nach gleichen Werten durchsuchen)
    Geändert von jomafi (20.02.11 um 14:25 Uhr)
     

Ähnliche Themen

  1. boolesche Matrixmultiplikation
    Von ignos im Forum Java Grundlagen
    Antworten: 1
    Letzter Beitrag: 03.12.09, 12:49
  2. Boolesche Option
    Von derbumann im Forum 3D Studio Max
    Antworten: 4
    Letzter Beitrag: 04.08.09, 10:12
  3. Antworten: 6
    Letzter Beitrag: 10.06.09, 14:27
  4. Mysql - Werte hinzufügen
    Von Zero2000 im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 12.07.07, 15:32
  5. mysql werte
    Von brenner26 im Forum PHP
    Antworten: 1
    Letzter Beitrag: 20.07.02, 10:03