Kom ihåg mig?
Home Menu

Menu


[Hjälp]MySQL query

Ämnesverktyg Visningsalternativ
Oläst 2010-10-21, 19:40 #1
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
Standard [Hjälp]MySQL query

Jag har en tabell som jag vill radera rader från.
Mitt problem är att jag vill kolla rader mot kolumner.

Så här långt har jag kommit, funkar dock ej:
Kod:
DELETE FROM entity_attributes WHERE itemid IN ( SELECT itemid FROM entity_attributes e WHERE (SELECT COUNT(*) FROM entity_attributes WHERE itemid = e.itemid AND attributeid = 280) = 1 AND (SELECT COUNT(*) FROM entity_attributes WHERE itemid = e.itemid AND attributeid = 276) = 1)
Tacksam för hilfe...

Senast redigerad av PaLL3 den 2010-10-21 klockan 19:43
PaLL3 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-10-21, 19:51 #2
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Du har gjort det onödigt komplicerat för dig.

Varför köra så många querys i samma fråga?
Det tar säkerligen längre tid än att göra det i separata frågor och loopa igenom det på serversidan, likaså otroligt mycket enklare att lösa problemen.
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-10-21, 21:05 #3
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
Ok, får testa.
Tack för svar...

*EDIT*
Får det icke att funka.
Fattar inte problemet...

Senast redigerad av PaLL3 den 2010-10-21 klockan 21:13
PaLL3 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-10-21, 21:46 #4
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
Jag körde denna istället;
Kod:
$result = mysql_query("select itemid from entity_attributes e where(select count(*) from entity_attributes where itemid = e.itemid and attributeid = 280) = 1 and (select count(*) from entity_attributes where itemid = e.itemid and attributeid = 276) = 1");
while($row = mysql_fetch_array($result)) $list .= $row['ItemID'] . ',';
mysql_query("delete from entity_attributes where itemid in ($list)");
Funkade inte heller...
PaLL3 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-10-21, 21:59 #5
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Citat:
Ursprungligen postat av PaLL3 Visa inlägg
Jag körde denna istället;
Kod:
$result = mysql_query("select itemid from entity_attributes e where(select count(*) from entity_attributes where itemid = e.itemid and attributeid = 280) = 1 and (select count(*) from entity_attributes where itemid = e.itemid and attributeid = 276) = 1");
while($row = mysql_fetch_array($result)) $list .= $row['ItemID'] . ',';
mysql_query("delete from entity_attributes where itemid in ($list)");
Funkade inte heller...

Kod:
$result = mysql_query("select distinct itemid from entity_attributes e where attributeid= 276 OR attributeid=280");
while($row = mysql_fetch_assoc($result))
$list[] = $row['itemid'];

mysql_query("delete from entity_attributes where itemid in (" . implode(',',$list) . ")");
Ser ingen skillnad i detta mot vad du komplicerat?
Jonas är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-10-21, 22:07 #6
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Citat:
Ursprungligen postat av PaLL3 Visa inlägg
Jag körde denna istället;
Kod:
$result = mysql_query("select itemid from entity_attributes e where(select count(*) from entity_attributes where itemid = e.itemid and attributeid = 280) = 1 and (select count(*) from entity_attributes where itemid = e.itemid and attributeid = 276) = 1");
while($row = mysql_fetch_array($result)) $list .= $row['ItemID'] . ',';
mysql_query("delete from entity_attributes where itemid in ($list)");
Funkade inte heller...
Och när du ser att det inte fungerar kan du testa att skriva ut queryn (generera den till en text-sträng innan den körs om du kör direkt mot mysql_) med felmeddelande (mysql_error()). Då skulle du se att din generering av query resulterar i en extra , på slutet. Använder du implode eller skapar specialfall för sista itereringen slipper du detta.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-10-21, 22:23 #7
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
Tack för hjälpen!
Och förklaringen! =)
PaLL3 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-10-21, 22:32 #8
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
Sorry for dubbelpost men;
testade precis Jonas query.
Problemet var att den raderade precis ALLA rader som innhöll attributeID 280 och 276 där den egentligen bara skulle raderat raderna med attributID 280 som inte hade en matchande itemID med 276.
Alltså en rad består av kollumnamn itemID, attributID.
AttributID består enbart av 280 eller 276 men dessa ska ha samma itemID för att höra ihop.
Och om det enbart finns en rad med antingen ett attributID 280 eller 276 men med ett unikt itemID ska det raderas...

Senast redigerad av PaLL3 den 2010-10-22 klockan 08:40
PaLL3 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-10-22, 11:42 #9
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
Ok, nu har jag kommit så här långt, tack Magnus...
Kod:
$dsn = 'mysql:dbname=DBNAME;host=localhost';
$dbUser = 'USER';
$dbPassword = 'PASSWORD';

$dbh = new PDO($dsn, $dbUser, $dbPassword);

$res = $dbh->prepare('select count(itemID) as count, itemID from entity_attributes group by itemID having count <2');
$res->execute();

$result = $res->fetchAll(PDO::FETCH_COLUMN, 1);
$test = implode(' ',$result);
print_r($test);
//mysql_query("delete from entity_attributes where count(itemid) in ($test)");

$dbh = null;
Den visar enskilda itemID's men tyvärr inte bara dom med attributeID 280 resp 276.
PaLL3 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-10-22, 13:50 #10
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
PaLL3 PaLL3 är inte uppkopplad
Nykomling
 
Reg.datum: Jan 2008
Inlägg: 25
Fick det att fungera.
Tack, återigen, Magnus för att du visade mig vägen...
PaLL3 är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 23:24.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017